如何在jupyter或spyder中使用ipython控制台启用回调函数?

2024-06-09 22:00:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python比较陌生,我正在尝试制作我的第一个GUI。我有一个回调函数,我正试图执行它根据单选按钮的按下改变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()

当我在文本编辑器中编写脚本后执行它时,它可以完美地工作,但是当我尝试执行相同的代码时(减win.mainloop)在spyder或jupyter notebook等交互式环境中,单选按钮会出现,但不会执行背景颜色更改。我怀疑这与一个回调函数有关,但我不确定。我应该如何编辑我的代码,使其在交互式shell中工作,或者更好地为使用回调函数设置交互式环境?在


Tags: 函数代码configureguicol按钮wintk
1条回答
网友
1楼 · 发布于 2024-06-09 22:00:13

尝试在Spyder中运行代码,但首先必须说:

  1. 要启动程序,必须使用mainloop()

  2. 我使用/不使用win.mainloop注意到没有win.mainloop,因为第1点,代码运行而不是GUI被创建。和win.mainloop(),注意到窗口很小,所以我不得不将其展开以查看更改,否则虽然它无法正常工作。建议增加窗口大小或设置最小大小,例如win.minsize(width=XXX,height=XXX)

  3. 最好使用:

    如果名称='main': win.mainloop()

除非您给出更多解释,否则不能在没有.mainloop()的情况下运行程序

相关问题 更多 >