gpt4 book ai didi

python - 如何使用 while 循环 PySimpleGUI 中的键获取日历按钮的值?

转载 作者:行者123 更新时间:2023-12-01 06:40:41 29 4
gpt4 key购买 nike

我对 PySimpleGUI 很陌生。我正在为桌面应用程序构建 GUI,并希望使用日历。但是当我从日历选择器弹出窗口中选择时,在 while 循环中检索日历按钮事件的值时出现了问题,而 window.read() 中没有超时。我尝试使用 event == 'CalendarButton's text' 获取其值,但无法,但如果您选择设置不同的日期,其按钮文本每次都会更改。您能否帮忙解决这个问题,或者我如何在 while 循环内使用其键来获取其(或任何元素的)值。或者至少我可以使用 Tkinter 日历包。如果是这样,我如何将 Tkinter Calendar 与 PySimpleGUI 窗口连接,我是否必须将元素的键绑定(bind)与 Tkinter 一起使用?

这是我放入窗口布局中的日历按钮定义代码:

sg.CalendarButton('Calendar', target='_CALENDAR_', pad=None, font=('MS Sans Serif', 10, 'bold'), 
button_color=('red', 'white'), key='_CALENDAR_', format=('%d %B, %Y'))

and here's the while loop events handling part

# LOOP EVENTS #
while True:

# READ EVENT VALUES #
event, values = window.read()

# EXIT OR CLOSE EVENT #
if event is None or event == 'Exit':
break

# BUTTON EVENTS

# CALENDAR BUTTON CLICKED EVENT #
if event == 'Calendar':
window['_CALENDAR_'](disabled=True)


# CLOSE WINDOW
window.close()

# POPUP
sg.Popup('Title',
'The results of the window.',
'The button clicked was "{}"'.format(event),
'The values are', values)

此外,退出窗口后,我在 sg.Popup() 输出中看不到此事件的值

'EDITED' 抱歉,sg.Popup() 中存在错误。现在已修复。

最佳答案

保存值和获取事件的方法是创建一个隐藏的输入字段。为输入字段启用事件,当日历填充您设置为目标的输入字段时,您将收到一个事件。

import PySimpleGUI as sg

layout = [ [sg.Text('Calendar example')],
[sg.In(key='-CAL-', enable_events=True, visible=False), sg.CalendarButton('Calendar', target='-CAL-', pad=None, font=('MS Sans Serif', 10, 'bold'),
button_color=('red', 'white'), key='_CALENDAR_', format=('%d %B, %Y'))],
[sg.Exit()]]

window = sg.Window('Calendar', layout)

while True: # Event Loop
event, values = window.read()
print(event, values)
if event in (None, 'Exit'):
break
window.close()

关于python - 如何使用 while 循环 PySimpleGUI 中的键获取日历按钮的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59472195/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com