PySimpleGUI按下按钮时调用函数

时间:2019-04-04 12:06:17

标签: python pysimplegui

将PySimpleGUI导入为sg 导入操作系统

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 :(得分:0)

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

已添加4/5/2019 我还应该在回答中指出,您可以在致电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')