myui.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import re
  2. from PySide2.QtWidgets import QDialog
  3. def set_font_size(window, text_font_size, text_font_family, sys_font_size, sys_font_family):
  4. """
  5. 设置 QTextBrowser 和主窗口其他控件的字体大小和字体族
  6. """
  7. # 设置 QTextBrowser 控件字体
  8. text_style_sheet = "QTextBrowser{{font-size:{}pt; font-family:\"{}\";}}".format(text_font_size, text_font_family)
  9. # 设置其他控件字体
  10. sys_style_sheet = "QWidget{{font-size:{}pt; font-family:\"{}\";}}".format(sys_font_size, sys_font_family)
  11. sys_style_sheet += text_style_sheet
  12. window.setStyleSheet(sys_style_sheet)
  13. def get_font_size(window):
  14. """
  15. 获取当前字体大小和字体族
  16. """
  17. style_sheet = window.styleSheet()
  18. # 使用正则表达式提取字体大小和字体族信息
  19. widget_regex = re.compile(r'QWidget{[^}]*font-size:(\d+)pt; font-family:"([^"]+)".*}')
  20. browser_regex = re.compile(r'QTextBrowser{[^}]*font-size:(\d+)pt; font-family:"([^"]+)".*}')
  21. widget_match = widget_regex.search(style_sheet)
  22. browser_match = browser_regex.search(style_sheet)
  23. # 将字体大小和字体族信息分别赋值给对应的变量
  24. if widget_match:
  25. sys_font_size, sys_font_family = int(widget_match.group(1)), widget_match.group(2)
  26. else:
  27. sys_font_size, sys_font_family = 9, "FreeMono"
  28. if browser_match:
  29. text_font_size, text_font_family = int(browser_match.group(1)), browser_match.group(2)
  30. else:
  31. text_font_size, text_font_family = 10, "Monospace"
  32. return text_font_size, text_font_family, sys_font_size, sys_font_family
  33. def change_font_size(widget, step=1):
  34. text_font_size, text_font_family, sys_font_size, sys_font_family = get_font_size(widget)
  35. set_font_size(widget, text_font_size+step, text_font_family,sys_font_size+step,sys_font_family)