2015-11-05 190 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

相關問題