【问题标题】:Update Element Using a Function - PySimpleGUI使用函数更新元素 - PySimpleGUI
【发布时间】:2021-03-17 09:38:17
【问题描述】:

在我的应用程序中,我试图通过在按下特定按钮时启动函数调用来更新文本元素。现在,按下按钮会在控制台中生成错误:NameError: name 'window' is not defined。

我正在使用的代码是:

import PySimpleGUI as sg
sg.theme('DarkAmber')
introText = """ Let's begin!"""
landing = """ Okay"""
col1 = [[sg.Button("""Let's begin!"""), sg.Button('Win3')]]
col2 = [[sg.Button('Exit')]]
def makeWin1():
    layout = [[sg.Menu(menu_def)],
              [sg.Text(introText, font= 'Helvetica 10', justification='center', key='text1')],
              [sg.Column(col1, vertical_alignment='center', justification='center',  k='C1')],
              [sg.Column(col2, vertical_alignment='center', justification='center',  k='C2')]]
    return sg.Window('Escape From Tenopia 2', layout, finalize=True,)

def main():
    window1 = makeWin1()

    while True:
        window, event, values = sg.read_all_windows()

        if window == sg.WIN_CLOSED:
            break
        if event == sg.WIN_CLOSED or event == 'Exit':
            window.close()
            if window == window1:
                window1 = None
        if event == 'About...':
            sg.popup(introText)

        if event == """Let's begin!""":
            change1()

def change1():
    window["text1"].update(landing)

if __name__ == '__main__':
    main()

我怎样才能让它按下“让我们开始!”按钮更新主文本元素以显示“着陆”中的文本?

【问题讨论】:

  • windowmain 中的局部变量,不能从函数change1 访问。
  • 第 8 行崩溃,出现 `NameError: name 'menu_def' is not defined for me so may start from there?

标签: python pysimplegui


【解决方案1】:

你需要传递一个参数给change1():

        if event == "Let's begin!":
            change1(window1)

def change1(window):
    window["text1"].update(landing)

或者不要为此使用任何额外的功能,并像这样调整你的 main():

        if event == "Let's begin!":
            window1["text1"].update(landing)

【讨论】:

  • 工作就像一个魅力!谢谢
猜你喜欢
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 2022-10-05
  • 2021-07-31
  • 2021-06-15
相关资源
最近更新 更多