将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()


按下提交按钮后如何调用函数?或其他任何按钮?

最佳答案

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')

08-24 22:42