2017-07-28 54 views
1

我怎樣才能在Tkinter的檢查Checkbutton由於從config.ini文件 值從分析配置我收到1或0選擇Checkbutton由於config.ini文件值的Tkinter

def show_config(): 
    config = switcher.config_read() 
    setting = Toplevel(root) 
    setting.title = 'Setting Change' 
    setting.geometry('320x620') 
    top = Frame(setting) 
    top.pack(side=TOP) 
    sections1 = Label(top, text='section1') 
    sections1.pack() 
    btn1= IntVar(value=1) 
    btn2= IntVar() 
    btn2.set(1) 
    btn1_check = Checkbutton(top, text='btn1', variable=btn1) 
    btn2_check = Checkbutton(top, text='btn1', variable=btn2) 
    btn1_check.pack(side=LEFT) 
    btn2_check.pack(side=LEFT) 

我試圖btn1= IntVar(value=1)btn2.set(1)的Checkbutton人選中

+0

語法都應該工作,你能添加更多的代碼,以顯示控件的顯示方式? – PRMoureu

回答

0

問題來自作爲垃圾收集的功能範圍。

下面的代碼不能工作:

import tkinter as tk 

root = tk.Tk() 
def show_config(): 
    check = tk.IntVar(value=1) 
    checkbox = tk.Checkbutton(root, text="check", variable=check) 
    checkbox.pack() 
show_config() 
root.mainloop() 

這一個可以得到價值由你的配置設置:

import tkinter as tk 

root = tk.Tk() 

check = tk.IntVar(value=1) 
checkbox = tk.Checkbutton(root, text="check", variable=check) 
checkbox.pack() 

root.mainloop() 

如果使用類它可以很容易保持變量(用self.btn1),否則你可能會使用全局變量。


可能的解決方法:

import tkinter as tk 

root = tk.Tk() 
check=None 

def show_config(): 
    global check 
    check = tk.IntVar(value=1) 
    checkbox = tk.Checkbutton(root, text="check", variable=check) 
    checkbox.pack() 
show_config() 
root.mainloop() 
+0

,但是我有一個菜單按鈕'main_menu.add_command(label ='Setting',command = show_config)''在'Toplevel'窗口中調用'show_config'我發佈的頌歌。當程序僅在設置被啓動時纔會顯示配置 – Hellbea

+0

@Hellbea然後嘗試在函數外部聲明變量btn1和btn2,因爲全局爲 – PRMoureu

+0

好吧,這樣做不錯,或者更好地更改爲類? thx – Hellbea

0

而不是使用IntVar()基本能夠持有任何整數值,我建議使用BooleanVar()可容納True/False1/0的,respec tively。在變量上調用.set()會將其值更改爲傳遞的值。下面的代碼片段展示了使用兩個「直接」與.set(True)方法,並用模擬配置文件(dict)間接的方法設置BooleanVar()

from tkinter import * 


def read_config(file_name): 
    # read config from file system 
    # return statement needs to be modified to own needs 
    return {'check_btn_var': 1} 


config = read_config('<file_name>') 

master = Tk() 


# use config from config file for checkbutton cb1 
var1 = BooleanVar() 
var1.set(config.get('check_btn_var')) 

cb1 = Checkbutton(master, text="Checkbutton", variable=var1) 
cb1.pack() 


# use hard coded value for checkbutton cb2 
var2 = BooleanVar() 
var2.set(True) 

cb2 = Checkbutton(master, text="Checkbutton", variable=var2) 
cb2.pack() 


mainloop() 
+0

相同。這可能會導致我使用'def show_config():'並通過'main_menu.add_command(label ='Setting',command = show_config)'調用它,並且此按鈕調用'Toplevel'窗口,其中必須檢查'Checkbutton'。但是我甚至沒有手動輸入'true'或'1' – Hellbea

相關問題