代码(PYTHON):

import tkinter as tk
root = tk.Tk()
root.geometry("600x400")
message_var2 = tk.StringVar()


def page2(message):
    print(f'test\n{message}')


def getInputtemp():
    global message
    message = message_var2.get()
    message_var2.set("")


message_entryi = tk.Entry(root, textvariable=message_var2, font=('calibre', 10, 'normal'))
message_entryi.pack()

save_btn2 = tk.Button(root, text='Send', command=getInputtemp)
save_btn2.pack()

if message in ['1886', '2022']:
    page2(message)
root.mainloop()

我想在函数外部使用变量‘MESSAGE’,但它一直给我未定义的错误

即使我将它设置为全局变量,并且在try 使用它之前调用该函数,我仍然收到错误,即使在将其设置为全局变量并调用它在过go 对其他事情起作用后,它在这里不起作用,我做错了什么吗?我是不是忘了什么小细节?

推荐答案

这里的问题是您的函数getInputtemp不会被触发.只有在按下按钮save_btn2时才会触发.此外,发生错误的if语句将只触发一次.要解决这个问题,你可以按照@Tkirishima的建议go 做.

或者只是将if语句移到getInputtemp函数中.

def getInputtemp():
    #global message 
    #Then you would no longer need message as a global variable
    message = message_var2.get()
    message_var2.set("")
    if message in ['1886', '2022']:
        page2(message)

但是,如果您确实希望在函数之外使用if语句(我不建议这样做,因为如前所述,它将在您启动脚本时执行,并且永远不会再次执行):

getInputtemp() #The function is called to create message as global variable
if message in ['1886', '2022']:
    page2(message)

Python相关问答推荐

以逻辑方式获取自己的pyproject.toml依赖项

为什么Python内存中的列表大小与文档不匹配?

以异步方式填充Pandas 数据帧

我对这个简单的异步者的例子有什么错误的理解吗?

你能把函数的返回类型用作其他地方的类型吗?'

Pandas:将值从一列移动到适当的列

对包含JSON列的DataFrame进行分组

PANDA:如何将多选列转换为索引/列

使用loc计算特定行的平均值,loc找不到行值

在Python Polar中从一个函数调用添加多个列

如何从多个词典中制作Pandas 数据帧?

如何更改GEKKO变量在解算为稳定状态后的MV状态?

优化数组加法(y,x,RGBA)

如果属性的类型是联合并使用默认值,为什么属性不能与类同名?

如何在Polars DataFrame中使用`isin‘?

向量化数据帧中的折叠过程

Python Scrapy Shell Error While Scraping Wallmart

SCRIT-学习定制转换器从底层模型抛出NotFittedError

支持向量机模型突出错误的数据点作为支持向量

Discord.py按钮后出现的 Select 菜单