PySimpleGUI - Spin 元素
PysimpleGUI 库中的 Spin 类的对象也是一个选择部件。 它的视觉外观显示了一个不可编辑的文本框,右侧有向上/向下按钮。 它能够显示数字或字符串列表中的任何一项。
当按下向上或向下按钮时,要显示的项目的索引递增或递减,列表中的下一个或上一个项目显示在控件的文本框中。 显示的值可以根据需要在程序逻辑中使用。
Spin() 构造函数的参数是 −
PySimpleGUI.Spin(values, initial_value, disabled, readonly, size)
这里,
values − 有效值的列表或元组 - 数字或字符串
initial_value − 最初显示的提供列表中的任何一项
disabled − 设置禁用状态
readonly − 单击向上/向下按钮时打开旋转元素事件
size − (w, h) w=字符宽,h=行高
Spin 类的 get() 方法返回显示在其文本框中的当前项目。 另一方面,update() 方法用于动态更改 Spin 元素的以下属性 −
value − 从选项列表中设置当前值
values − 将新列表对象设置为可用选项
当单击上/下按钮时,Spin 元素会生成由 key 参数标识的选择更改事件。
在下面的示例中,我们借助三个 Spin 元素构造一个简单的日期选择器 - 日期、月份名称和 2000 到 2025 之间的年份。日期和年份元素的范围是数字,而对于月份自旋元素, 范围是字符串。
import PySimpleGUI as psg import calendar from datetime import datetime dates = [i for i in range(1, 32)] s1 = psg.Spin(dates, initial_value=1, readonly=True, size=3, enable_events=True, key='-DAY-') months = calendar.month_abbr[1:] s2 = psg.Spin(months, initial_value='Jan', readonly=True, size=10, enable_events=True, key='-MON-') yrs = [i for i in range(2000, 2025)] s3 = psg.Spin(yrs, initial_value=2000, readonly=True, size=5, enable_events=True, key='-YR-') layout = [ [psg.Text('Date'), s1, psg.Text("Month"), s2, psg.Text("Year"), s3], [psg.OK(), psg.Text("", key='-OUT-')] ] window = psg.Window('Spin Element Example', layout, font='_ 18', size=(700, 100)) while True: event, values = window.read() if event == 'OK': datestr = str(values['-DAY-']) + " " \ + values['-MON-'] + "," \ + str(values['-YR-']) try: d = datetime.strptime(datestr, '%d %b,%Y') window['-OUT-'].update("Date: {}".format(datestr)) except: window['-OUT-'].update("") psg.Popup("Invalid date") if event == psg.WIN_CLOSED: break window.close()
将 Spin 元素设置为所需的日期值,然后按 OK。 如果日期字符串表示有效日期,它将显示在底行的文本元素中。
如果日期字符串不正确(例如,29-Feb-2022),则会出现一个弹出窗口,指示该值无效。