首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Tkinter Spinbox似乎重置了变量值

Python Tkinter Spinbox似乎重置了变量值
EN

Stack Overflow用户
提问于 2016-12-19 22:44:04
回答 1查看 2K关注 0票数 1

我正在使用Python2.6.5和TKinter.TkVersion 8.5

以下是buggy行为的MWE:

代码语言:javascript
复制
import Tkinter as tk

root = tk.Tk()

classic_var = tk.IntVar()
classic_var.set(2)
classic_spinbox = tk.Spinbox(root, from_=0, to=3,textvariable=classic_var)
classic_spinbox.pack()

values_var = tk.IntVar()
values_var.set(2)
values_spinbox = tk.Spinbox(root, values=(0, 1, 2, 3), textvariable=values_var)
values_spinbox.pack()

print classic_var.get() #expected : 2, actual : 2
print values_var.get() #expected : 2, actual : 0

root.mainloop()

即使在Spinbox初始化之后,我也希望value_var是"2“。

你可以在这里看到结果的截图:

这是一个已知的bug吗?除了这个,还有其他的变通方法吗?

代码语言:javascript
复制
initial_value = 2
values_var = tk.IntVar()
values_spinbox = tk.Spinbox(root, ...
values_var.set(initial_value)
EN

回答 1

Stack Overflow用户

发布于 2016-12-19 23:20:08

根据我自己的测试和一些研究,最好的方法是做你建议的变通方法,那就是在初始化后设置默认值。

我通过谷歌搜索找到了另一个用户的答案,哈哈:How can I establish a default String value on a Tkinter Spinbox?

这实际上是由于值的编码方式而导致的预期行为。values的工作方式是,它在某种意义上覆盖了其他参数,因此它使用您在values中声明的第一个值作为初始值,而不是您的文本变量。我不相信有任何方法可以解决这个问题。

参考:https://www.tcl.tk/man/tcl8.4/TkCmd/spinbox.htm#M22然后单击values,它将对其进行解释。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41225071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档