import re from PySide2.QtWidgets import QDialog def set_font_size(window, text_font_size, text_font_family, sys_font_size, sys_font_family): """ 设置 QTextBrowser 和主窗口其他控件的字体大小和字体族 """ # 设置 QTextBrowser 控件字体 text_style_sheet = "QTextBrowser{{font-size:{}pt; font-family:\"{}\";}}".format(text_font_size, text_font_family) # 设置其他控件字体 sys_style_sheet = "QWidget{{font-size:{}pt; font-family:\"{}\";}}".format(sys_font_size, sys_font_family) sys_style_sheet += text_style_sheet window.setStyleSheet(sys_style_sheet) def get_font_size(window): """ 获取当前字体大小和字体族 """ style_sheet = window.styleSheet() # 使用正则表达式提取字体大小和字体族信息 widget_regex = re.compile(r'QWidget{[^}]*font-size:(\d+)pt; font-family:"([^"]+)".*}') browser_regex = re.compile(r'QTextBrowser{[^}]*font-size:(\d+)pt; font-family:"([^"]+)".*}') widget_match = widget_regex.search(style_sheet) browser_match = browser_regex.search(style_sheet) # 将字体大小和字体族信息分别赋值给对应的变量 if widget_match: sys_font_size, sys_font_family = int(widget_match.group(1)), widget_match.group(2) else: sys_font_size, sys_font_family = 9, "FreeMono" if browser_match: text_font_size, text_font_family = int(browser_match.group(1)), browser_match.group(2) else: text_font_size, text_font_family = 10, "Monospace" return text_font_size, text_font_family, sys_font_size, sys_font_family def change_font_size(widget, step=1): text_font_size, text_font_family, sys_font_size, sys_font_family = get_font_size(widget) set_font_size(widget, text_font_size+step, text_font_family,sys_font_size+step,sys_font_family)