pysimplegui字体随窗口大小变化

来自:https://www.5axxw.com/questions/simple/dwj3z8

要使PySimpleGUI的字体随窗口大小变化,可以更改字体大小的选项(即“font”参数)为窗口大小的一部分。以下是一个示例,其中字体大小取决于窗口高度:

import PySimpleGUI as sg
from math import ceil
# 定义每个界面元素的样式
button_size = (10, 2)
font_size = 20
# 定义主窗口
layout = [[sg.Text('Hello world!', font=('Helvetica', font_size), key='-TEXT-')],
          [sg.Button('Button', size=button_size)]]
window = sg.Window('Resizable Window', layout, resizable=True)
# 通过循环运行事件循环,以响应对窗口大小的更改
while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, 'Exit'):
        break
    else:
        # 每当窗口大小更改时,重新计算字体大小
        height = values['-WINDOW-'][1]
        new_font_size = ceil(height / 10)
        window['-TEXT-'].update(font=('Helvetica', new_font_size))
window.close()

在此示例中,我们首先定义了一个常量“font_size”,并在“layout”中使用它来设置文本元素的字体大小。然后,我们创建了一个可调整大小的窗口并循环运行事件循环。在事件循环中,我们检查窗口事件,如果用户关闭了窗口或单击了“退出”按钮,则退出循环;否则,我们分别检查窗口高度,并使用它来计算新的字体大小。最后,我们使用“update”方法将新字体大小应用于文本元素并重绘窗口。由于PySimpleGUI的“update”方法能够智能地处理部分更新和自动大小调整,因此我们无需手动计算和设置文本元素的位置和大小。