我在python shell中做了这个:
from Tkinter import *
v = BooleanVar()
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Traceback (most recent call last):
File "<pyshell#52>", line 1, in <module>
v = BooleanVar()
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 320, in __init__
Variable.__init__(self, master, value, name)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 185, in __init__
self._tk = master.tk
AttributeError: 'NoneType' object has no attribute 'tk'
>>>
Run Code Online (Sandbox Code Playgroud)
然后在尝试使其工作时,我尝试了这个:
v = BooleanVar
Run Code Online (Sandbox Code Playgroud)
这很有效.
所以我继续做下一个合乎逻辑的事情,检查变量是否已初始化并获得:
>>> v
<class Tkinter.BooleanVar at 0xb6f666bc>
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用值初始化,True为此我使用了该set方法:
v.set(True)
Run Code Online (Sandbox Code Playgroud)
为此我收到以下错误:
Traceback (most recent call last):
File "<pyshell#63>", line 1, in <module>
v.set(True)
TypeError: unbound method set() must be called with BooleanVar instance as first argument (got bool instance instead)
Run Code Online (Sandbox Code Playgroud)
怎么回事?
请帮我解决这个问题
目标我想将此作为与菜单中的复选按钮关联的变量
规范 Linux mint 14,python 2.7,Tkinter 8.5
简短的回答:先打个电话root = tk.Tk().
答案很长:提出错误的那一行,
self._tk = master.tk
Run Code Online (Sandbox Code Playgroud)
是因为失败master的None.但是,请查看此行上方的代码(在Tkinter.py中):
class Variable:
def __init__(self, master=None, value=None, name=None):
if not master:
master = _default_root
...
self._tk = master.tk
Run Code Online (Sandbox Code Playgroud)
如果你明确地将一个master小部件传递给BooleanVar(它的子类Variable),那么master就不会None.或者,如果_default_root不是None,那就master不会None.
在普通的Tkinter应用程序中,您将在创建之前创建一个根窗口BooleanVar.在这种情况下,tk.BooleanVar()不会引发错误.
root = tk.Tk()将_default_root全局变量设置为自身(只要useTk参数是True- 默认情况下).如果未明确设置master,则将其_default_root用作BooleanVar窗口小部件的主设备tk.BooleanVar(master).
总而言之,无论是调用root = tk.Tk()还是类似于设置_default_root调用之前的内容tk.BooleanVar(),或者将显式主窗口小部件作为第一个参数传递:tk.BooleanVar(master).
In [1]: import Tkinter as tk
In [2]: root = tk.Tk()
In [3]: x = tk.BooleanVar()
In [4]: x.set(True)
In [5]: x.get()
Out[5]: 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4702 次 |
| 最近记录: |