PySimpleGUI вызывать функцию при нажатии кнопки
Импортировать PySimpleGUI как sg import os
layout = [[sg.Text('Velg mappe som skal tas backup av og hvor du vil plassere backupen')],
[sg.Text('Source folder', size=(15, 1)), sg.InputText(), sg.FolderBrowse()],
[sg.Text('Backup destination ', size=(15, 1)), sg.InputText(), sg.FolderBrowse()],
[sg.Text('Made by Henrik og Thomas™')],
[sg.Submit(), sg.Cancel()]]
window = sg.Window('Backup Runner v2.1')
event, values = window.Layout(layout).Read()
Как я могу вызвать функцию, когда я нажимаю кнопку отправки? или любая другая кнопка?
1 ответ
Документация PySimpleGUI обсуждает, как это сделать, в разделе о событиях / обратных вызовах https://pysimplegui.readthedocs.io/.
Это не так много других структур Python GUI, которые используют обратные вызовы для сигнализации нажатия кнопок. Вместо этого все нажатия кнопок возвращаются как "события", возвращающиеся из вызова Read.
Чтобы достичь аналогичного результата, вы проверяете событие и сами вызываете функцию.
import PySimpleGUI as sg
def func(message):
print(message)
layout = [[sg.Button('1'), sg.Button('2'), sg.Exit()] ]
window = sg.Window('ORIGINAL').Layout(layout)
while True: # Event Loop
event, values = window.Read()
if event in (None, 'Exit'):
break
if event == '1':
func('Pressed button 1')
elif event == '2':
func('Pressed button 2')
window.Close()
Чтобы увидеть, как этот код запускается онлайн, вы можете запустить его здесь, используя веб-версию: https://repl.it/@PySimpleGUI/Call-Func-When-Button-Pressed
Добавлено 05.04.2009 Я должен был также указать в своем ответе, что вы можете добавить проверки событий сразу после вызова Read. Вам не нужно использовать цикл событий, как я показал. Это может выглядеть так:
event, values = window.Layout(layout).Read() # from OP's existing code
if event == '1':
func('Pressed button 1')
elif event == '2':
func('Pressed button 2')