| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 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)
|