300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python单选按钮重置_python – Tkinter单选按钮初始化错误

python单选按钮重置_python – Tkinter单选按钮初始化错误

时间:2022-02-09 21:37:49

相关推荐

python单选按钮重置_python – Tkinter单选按钮初始化错误

存储变量对象的位置(StringVar,v,在您的情况下)必须保持不变,以便这种奇怪的行为不会出现.我的猜测是我们看到这种行为因为v超出了范围,出了问题.除了使用全局之外,我无法想到从函数中执行此操作的方法.

破码:

from Tkinter import *

def App(master):

v = StringVar()

v.set('python')

lable1 = Label(master, text=' hovering over below radio buttons will cause them to look like they are selected')

lable1.pack()

runtimeFrame = Frame(master, relief=GROOVE, borderwidth=3)

runtimeFrame.pack(fill=X, pady=5, padx=5)

for mode in ['java', 'python', 'jython']:

b = Radiobutton(runtimeFrame, text=mode, variable=v, value=mode, indicatoron=1)

b.pack(side=LEFT)

if __name__ == '__main__':

master = Tk()

App(master)

mainloop()

示例修复:

from Tkinter import *

def App(master, radio_var):

radio_var.set('python')

lable1 = Label(master, text=' hovering over below radio buttons will cause them to look like they are selected')

lable1.pack()

runtimeFrame = Frame(master, relief=GROOVE, borderwidth=3)

runtimeFrame.pack(fill=X, pady=5, padx=5)

for mode in ['java', 'python', 'jython']:

b = Radiobutton(runtimeFrame, text=mode, variable=radio_var, value=mode, indicatoron=1)

b.pack(side=LEFT)

if __name__ == '__main__':

master = Tk()

radio_var = StringVar()

App(master, radio_var)

mainloop()

考虑一下,如果你有多个需要持久化的变量,你可以传入一个变量列表或字典.

此外,如果“必须在函数中”是作业分配要求,请考虑将代码包装在类中.我不是tk专家,但这似乎是组织代码的首选方式.

示例修复2:

from Tkinter import *

class App(object):

def __init__(self, master):

self.radio_var = StringVar()

self.radio_var.set('python')

lable1 = Label(master, text=' hovering over below radio buttons will cause them to look like they are selected')

lable1.pack()

runtimeFrame = Frame(master, relief=GROOVE, borderwidth=3)

runtimeFrame.pack(fill=X, pady=5, padx=5)

for mode in ['java', 'python', 'jython']:

b = Radiobutton(runtimeFrame, text=mode, variable=self.radio_var, value=mode, indicatoron=1)

b.pack(side=LEFT)

if __name__ == '__main__':

master = Tk()

app = App(master)

mainloop()

注意一个微小的变化

app = App(master)

这是必需的,以便App实例不会过早地进行垃圾回收.这将有效地将self.radio_var拉出范围,我们又回到了第一个方向.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。