tkinter python程序结构

tkinter python程序结构,python,tkinter,Python,Tkinter,我是python编程新手,程序结构有点问题: 当我在python的主要部分中创建GUI时,代码可以正常工作: import tkinter as tk root = tk.Tk() root.overrideredirect(True) root.geometry("800x480") def cb_Gebruiker(): btnUser["text"]= "changed" btnUser = tk.Button(root, text="User",command = cb_G

我是python编程新手,程序结构有点问题: 当我在python的主要部分中创建GUI时,代码可以正常工作:

import tkinter as tk

root = tk.Tk()
root.overrideredirect(True)
root.geometry("800x480")

def cb_Gebruiker():
    btnUser["text"]= "changed"

btnUser = tk.Button(root, text="User",command = cb_Gebruiker)
btnUser.place(x=1,y=1,width="300",height="73")


root.mainloop()
当我在函数中创建GUI时,btn变量是本地变量,因此这不起作用

def MakeBtn():
    btnUser = tk.Button(root, text="User",command = cb_Gebruiker)
    btnUser.place(x=1,y=1,width="300",height="73")

def cb_Gebruiker():
    btnUser["text"]= "changed"

MakeBtn()


root.mainloop()
现在我有一个相当大的程序,我希望我的GUI在一个单独的文件中,但是我不能访问我的GUI组件。。。 我似乎找不到关于如何构造程序的教程(python有很多可能性:脚本、模块、面向对象等等)


如何解决此问题?

您需要一个
lambda
来延迟对带有参数的命令的调用


def MakeBtn():
    btnUser = tk.Button(root, text="User", command = lambda: cb_Gebruiker(btnUser))
    btnUser.place(x=1, y=1, width="300", height="73")

def cb_Gebruiker(btnUser):
    btnUser["text"] = "changed"

MakeBtn()


root.mainloop()
“希望我的GUI在一个单独的文件中…可能性:
脚本
模块
面向对象
”:您需要所有这些,请阅读