Loading

4-关于事件

在前面的例子中,我们没有对以下语句做出说明:

# 监听事件
event,values=window.read()

接下来,我们对其做出简单解释:

  • event
    当执行window.read()函数时,将会返回一个(event,values)元组。event是事件,它可能是一个按钮的按下、列表项的选择等,比如我设置了一个sg.Submit('提交')按钮,那么event返回的是'提交'。如果我什么也不填,sg.Submit(),那么返回默认值'Submit',当然界面上显示的也是Submit。如果用户点击右上角X关闭窗口,则是None。

默认情况下只有Button才能触发事件,然后执行window.read(),也就是说返回的event始终是button名。但是如果你给控件加上一个 enable_events=True参数,那么点击任何控件都可以触发事件了,比如说 sg.Text('name',enable_events=True),那么点击文本也可以触发事件。

  • values
    values是一个包含所有输入元素的值的字典。字典使用键来定义词条。如果你的元素没有特定的键,系统为你提供一个键。这些自动编号的键是以0开始的。

比如说我有两个输入框,则第一个输入框的值是values[0],第二个输入框的值是values[1]

我们看一个具体的例子,就会更加清晰:

  • 实例代码
import PySimpleGUI as sg
 
sg.theme('GrayGrayGray')

layout=[  
        [sg.Text('我主要是显示文本',size=(15,1),font="Consolas",) ],
        [sg.Text('姓名:'),sg.Input('我不是张三',size=(10,1)),],
        [sg.Text('简历:'),sg.Multiline('毕业于青年大学',size=(50,10))],
        [sg.Text('爱好:'),sg.Listbox(['唱歌','旅游','舞蹈','电影'],size=(5,6))],
        [sg.Button("确定")]

       ]
 
# 创建窗口
window = sg.Window('Window Title', layout)

# 监听事件
event,values=window.read()

print(event,values)
  • 选择操作

  • 输出选择
    event、values中的(键)值如下,可以看到,键按照对象位置从0开始

确定 {0: '张三', 1: '青年大学', 2: ['电影']}

有的时候,我们需要只用自定义键,方便调用。如何自定义键呢?
需要将以下语句中添加参数key=keyname

sg.Input('我不是张三',key='name',size=(10,1)),

然后在使用values['name']即可获取。

如果对按扭定义了键,那么event返回的是键的名。

sg.Button("确定",key="submit") #单击确定按钮时,event返回submit

posted @ 2023-06-30 08:28  Devinwon  阅读(54)  评论(0)    收藏  举报