import sys
from tkinter import *
def run_GUI():
# create the window
root = Tk()
frame = Frame(root)
frame.pack()
#modify root window
root.title("Simple GUI")
root.geometry("700x300") # w x h
def SP2T(): # Edit occurs here where I forgot to pit that the button was created in a called funtction
#Creates Row
frameSP2T = Frame(root)
frameSP2T.pack(side = TOP)
#Creating Buttons First Row
button1 = Button(frameSP2T, padx=13, pady = 6, bd=4, text="SW02",fg = "black", command = SW02)
button1.pack(side = LEFT)
def SW02():
print("SW02 is on")
button1["fg"] = "green"
#Sets up initial boot screen
#Creates Row
topframe = Frame(root)
topframe.pack(side = TOP)
#Creating Buttons First Row
buttonA = Button(topframe, padx=13, pady = 6, bd=4, text="SP2T",fg = "black", command = SP2T)
buttonA.pack(side = LEFT)
buttonB = Button(topframe, padx=12, pady = 6, bd=4, text="SP4T",fg = "black")
buttonB.pack(side = LEFT)
buttonC = Button(topframe, padx=12, pady = 6, bd=4, text="SP12T",fg = "black")
buttonC.pack(side = LEFT)
buttonD = Button(topframe, padx=12, pady = 6, bd=4, text="QUIT", fg="red",command=frame.quit)
buttonD.pack(side = LEFT)
#Kick off event loop
root.mainloop()
return
run_GUI()
我得到了一个错误:
^{pr2}$更新的版本,希望能显示整个画面
这个程序还有更多内容,所以它说第60行,但这是问题所在。我在试着改变按钮按下时的颜色。在
你在处理scope问题。异常发生在函数
SW02()
中,因为您试图修改不在函数作用域内的对象。你得把它递过去。将SW02()
更改为以下内容:由于将函数用作命令的操作,因此有几个选项可以实际传递它。在
使用lambda:
^{pr2}$使用functools.partial公司名称:
或者,正如jornsharpe的回答所建议的那样,您可以将整个GUI函数重构为一个类,并将所有小部件都作为类成员,然后将小部件操作与类方法(而不是普通函数)相关联。你可以通过修改所有组件的方式来访问它们。在
最简单的修复方法是将
global button
添加到需要访问该对象的两个函数的开头:但是,使用
^{pr2}$global
通常是一个错误的标志,相反,您可以采用基于类的方法,如下面这个简单的示例所示:相关问题 更多 >
编程相关推荐