2016-12-01 69 views
-1

當我點擊複選框時,我希望var1的值更改爲1.但是,當我在某個函數中做var1.get()值始終出現爲0複選框,當我勾選該框的var值不會更改爲1

var1 = IntVar() 
tickbox_1 = Checkbutton(custom, text=label_1, variable=var1,) 
tickbox_1.grid(row=2,column=1) 

我有一個由一個按鈕,得到的var1值並打印它調用的函數。

​​

有什麼我可以做的,以確保var1成爲1時,該框被勾選?另外,如何在窗口啓動時打勾?

+1

請閱讀[如何創建一個最小的,完整的和可驗證的實施例](http://stackoverflow.com/help/mcve) –

回答

0

您的代碼基本上是正確的,所以你的問題的原因必須在你還沒有告訴我們其他的代碼。

FWIW,這裏有一個小的工作演示。

import tkinter as tk 

root = tk.Tk() 

var1 = tk.IntVar() 
var1.set(1) 

tickbox_1 = tk.Checkbutton(root, text='Tick_1', variable=var1) 
tickbox_1.grid(row=0, column=0) 

def callback(): 
    print(var1.get()) 

b = tk.Button(root, text="Show", command=callback) 
b.grid(row=0, column=1) 

root.mainloop() 

線​​使複選框開始了在選中狀態。

+0

當我var1.set(1)所述第一複選框的值的確顯示爲1,但該框仍未勾選。該代碼是相同的,因爲我表現出這樣的IM不太清楚問題出在哪裏可以位於... –

+1

@DominikPraski所有我可以建議是,爲您創造一個[MCVE]再現您的問題,並把它添加到年底你題。我明天會看看它(我的時區很晚),或者其他人可能同時幫助你。 –

+0

好的,謝謝@PM 2Ring –

-1

我想我找到了程序規定在那裏,我的程序formend有許多窗口和tickboxes不在主窗口(根)。我希望他們在這個輔助窗口中,並且值不會在第二個窗口中更改。

from tkinter import * 

root = Tk() 


def open_custom_gui(): 
    custom_gui() 



b = Button(root,command=open_custom_gui) 
b.grid(row=1,column=0) 

def custom_gui(): 

    def getinfo(): 
     print(var1.get()) 

    custom= Tk() 




    var1 = IntVar() 

    tickbox_1 = Checkbutton(custom,text='TEST', 
            variable=var1,) 
    tickbox_1.grid(row=0,column=0) 


    b = Button(custom,command=getinfo) 
    b.grid(row=1,column=0) 



    custom.mainloop() 

root.mainloop() 
+0

這似乎不是一個答案。請不要試圖通過發佈信息來更新您的問題,就好像它是一個答案。 –

+0

布賴恩說什麼。將此代碼移至現有問題的末尾,或者提出新問題。順便說一句,你應該在Tkinter程序中不要調用'Tk()'或'.mainloop()'兩次。 –