我是python的新手,我正在尝试制作我的第一个GUI。我有一个回调函数,我试图执行,根据Radiobutton按下的内容更改GUI窗口的背景颜色。这是代码:
import tkinter as tk
win = tk.Tk()
win.title("Python GUI")
colors = ["Blue", "Gold", "Red"]
def radCall():
radSel=radVar.get()
if radSel == 0: win.configure(background=colors[0])
elif radSel == 1: win.configure(background=colors[1])
elif radSel == 2: win.configure(background=colors[2])
radVar = tk.IntVar()
radVar.set(99)
for col in range(3):
curRad = 'rad' + str(col)
curRad = tk.Radiobutton(win, text=colors[col], variable=radVar, value=col, command=radCall)
curRad.grid(column=col, row=6, sticky=tk.W)
win.mainloop()
当我在文本编辑器中编写脚本后执行脚本时,它运行得很好但是当我尝试在spyder或jupyter笔记本等交互式环境中执行相同的代码(减去win.mainloop)时,无线电按钮会出现但是它们会出现不执行背景颜色更改。我怀疑这与它涉及回调函数的事实有关,但我并不积极。我应该如何编辑代码以使其在交互式shell中工作,或者更好地设置我的交互式环境以使用回调函数?
答案 0 :(得分:0)
尝试在Spyder中运行代码,首先要说:
要启动该程序,您必须使用mainloop()
我使用/不使用win.mainloop运行代码并注意到没有win.mainloop,代码运行但由于点1而没有创建GUI。使用win.mainloop(),注意到窗口很小,所以我不得不扩展它以查看更改,否则虽然它不起作用。建议是增加窗口大小或设置最小大小,例如win.minsize(width=XXX,height=XXX)
最好使用:
如果名称 =='主要': win.mainloop()
除非您提供更多解释,否则无法在没有.mainloop()
的情况下运行该程序