2015-11-05 194 views
0

我的代码看起来是这样的如何从python中的checkbutton获取文本? (Tkinter的)

from Tkinter import * 
import tkMessageBox 
import Tkinter 

top = Tkinter.Tk() 
CheckVar1 = IntVar() 
CheckVar2 = IntVar() 

C1 = Checkbutton(top, text = "Music", variable = CheckVar1, onvalue = 1, offvalue = 0) 
C2 = Checkbutton(top, text = "Video", variable = CheckVar2,onvalue = 1, offvalue = 0) 

我已经创建了两个checkbuttons与价值观和一些文字。 如果我想打印checkbuttons i的值使用此代码:

print CheckVar1.get() 
print CheckVar2.get() 

但我也想打印Checkbutton的文本。我试图以下内容:

print C1.get("text") 
print C2.get("text) 

哪一个根本不起作用。是不是有一些技巧呢?还是我必须创造一些像这样的解决方法:(这似乎很奇怪)

CheckVar1 = IntVar() 
CheckVar2 = IntVar() 
Name1 = StringVar(value="Music") 
Name2 = StringVar(value="Video") 

C1 = Checkbutton(top, text = Name1, variable = CheckVar1, onvalue = 1, offvalue = 0) 
C2 = Checkbutton(top, text = Name2, variable = CheckVar2,onvalue = 1, offvalue = 0) 

print Name1 
print Name2 

预先感谢您;)

+0

@Kevin谢谢。我忘了提及我添加了'grid'函数,它一直返回给我'None'。现在我分开我的checkbuttons,像这样'C1 = ...'和'C1.grid(....)',现在'cget()'函数可以工作!谢谢 – nieka

+0

为什么你想从UI获取文本?这是一种代码味道。 UI不是用于存储值,而是用于与用户进行通信。 – BlackJack

回答

4
print C1.get("text") 
print C2.get("text) 

为了得到一个控件的属性值,请尝试使用cget

print C1.cget("text") 
print C2.cget("text") 
+0

我也试过这个,并得到以下错误:print self.C1.cget(“text”) AttributeError:'NoneType'对象没有属性'cget' – nieka

+0

你在做'C1 = CheckButton(...)。 pack()'创建widget时?这使得无法访问其属性。有关更多信息,请参见[Tkinter:AttributeError:NoneType对象没有获取属性](http://stackoverflow.com/q/1101750/953482)。 – Kevin

相关问题