課程簡(jiǎn)介
1、窗口關(guān)閉事件
2、按鈕點(diǎn)擊事件
3、其他元素事件
一、窗口關(guān)閉事件
1)窗口關(guān)閉按鈕是一個(gè)特殊的按鈕,在界面的右上角“×”
2)編寫方法
if event== None:#窗口關(guān)閉事件
? ? ? ? break
if event= sg.WIN_CLOSED:#窗口關(guān)閉事件
? ? ? ? break
注意:
定義窗口關(guān)閉事件是至關(guān)重要的,忘記定義窗口關(guān)閉事件,但后又點(diǎn)擊窗口右上角的“×”按鈕,它會(huì)默默的消耗你100%CPU。
二、按鈕點(diǎn)擊事件
if event==“確認(rèn)”:# 判斷事件是否發(fā)生
? ? ? ? print(“確認(rèn)”),#事件發(fā)生時(shí)要處理執(zhí)行的任務(wù)
? ? ? ? sg.Popup(“執(zhí)行確認(rèn)任務(wù)”)
if event==“取消”:#判斷事件是否發(fā)生
? ? ? ??print(“取消”),#事件發(fā)生時(shí)要處理執(zhí)行的任務(wù)
? ? ? ? sg.Popup(“執(zhí)行取消任務(wù)”)
if event==“Exit”:
? ??????sg.Popup(“您點(diǎn)擊了Exit按鈕”) # 執(zhí)行彈窗任務(wù)
? ? ? ? break
if event? in(“Exit”,None):
????????sg.Popup(“您點(diǎn)擊了Exit或者窗口關(guān)閉按鈕”)
? ? ? ? break
if event.startswith(“Exit”):? # 執(zhí)行括號(hào)里面開頭的任務(wù)
????????sg.Popup(“您點(diǎn)擊了Exit***按鈕”)
? ? ? ? break
if event.endswith(“Exit”):?
????????sg.Popup(“您點(diǎn)擊了***Exit按鈕”)
? ? ? ? break
三、點(diǎn)擊按鈕事件(代碼)
import PySimpleGUIas sg
# 定義布局
layout= [
? ? [sg.Text("請(qǐng)輸入您的基本信息")],
????[sg.T("姓名"), sg.InputText("程序員")],
????[sg.T("性別"), sg.In("男")],
????[sg.T("國(guó)籍"), sg.In("中國(guó)")],
????[sg.B("確定",key="ok"), sg.B("取消",key="Exit")],
????[sg.B("確定_",key="ok_1"), sg.B("取消",key="1_Exit")],
]
#? 創(chuàng)建窗口
window= sg.Window("Python GUI", layout)
# 事件循環(huán)
while True:
? ? event, values= window.read()? # 窗口的讀取,有兩個(gè)返回值(1、事件,2、值)
? ? if event in ("Exit",None):
? ? ? ? sg.Popup("您執(zhí)行了取消任務(wù)")
? ? ? ? break
? ? if event== "ok":
? ? ? ? sg.Popup("您執(zhí)行了確定任務(wù)")
? ? if event.startswith("ok"):
? ? ? ? sg.Popup("您執(zhí)行了確定彈窗任務(wù)")
# 關(guān)閉窗口
window.close()
效果如下:

四、其他元素事件
1)像文本元素、輸入框、下拉菜單等事件屬性默認(rèn)是關(guān)閉的,只有手動(dòng)設(shè)置他們的事件屬性enable_events = True時(shí),它們將具有事件屬性。
例如:文本元素
layout= [[sg.Text("OK"),enable_evevnt = True]]
if event == "OK":
? ? sg.Popup("文本屬性為真")
代碼如下:
import PySimpleGUIas sg
# 定義布局
layout= [
? ? [sg.Text("請(qǐng)輸入您的基本信息",enable_events= True)],
????[sg.T("姓名"), sg.InputText("程序員")],
????[sg.T("性別"), sg.In("男")],
????[sg.T("國(guó)籍"), sg.In("中國(guó)")],
????[sg.B("確定",key="ok"), sg.B("取消",key="Exit")],
????[sg.B("確定_",key="ok_1"), sg.B("取消",key="1_Exit")],
]
#? 創(chuàng)建窗口
window= sg.Window("Python GUI", layout)
# 事件循環(huán)
while True:
? ? event, values= window.read()? # 窗口的讀取,有兩個(gè)返回值(1、事件,2、值)
? ? if eventin ("Exit",None):
? ? ? ? sg.Popup("您執(zhí)行了取消任務(wù)")
? ? ? ? break
? ? if event== "ok":
? ? ? ? sg.Popup("您執(zhí)行了確定任務(wù)")
? ? if event.startswith("ok"):
? ? ? ? sg.Popup("您執(zhí)行了確定彈窗任務(wù)")
? ? if event== "請(qǐng)輸入您的基本信息":
? ? ? ? sg.Popup("這個(gè)是文本,鼠標(biāo)點(diǎn)擊無(wú)用")
# 關(guān)閉窗口
window.close()
效果如下:
