PySimpleGUI вызывать функцию при нажатии кнопки - PullRequest
1 голос
/ 04 апреля 2019

import 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 Ответ

0 голосов
/ 04 апреля 2019

Документация PySimpleGUI обсуждает, как это сделать, в разделе о событиях / обратных вызовах. https://pysimplegui.readthedocs.io/#the-event-loop-callback-functions

Это не так уж много других структур 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')
...