2016-03-14 3 views
0

Я создал Checkbutton в Tkinter, но когда я достигаю проверенное значение, оно не возвращает ничего:Невозможно получить доступ значения от Checkbutton Tkinter

self.inttype = IntVar() 
self.setrandom = Checkbutton(self.userpanel, text='Random', variable=self.inttype) 
self.setrandom.grid(row=5, column=2, sticky=EW) 

Здесь я печать значения:

print('Value : ', self.inttype.get()) 

Выходной сигнал:

Value: 

Есть ли какой-либо другой способ получить значение из контрольной кнопки?

+0

Вы назвали главного окна MainLoop() перед выполнением печати ('Значение:', self.inttype.get())? – Pedru

+0

Да, я назвал на самом деле я применил тот же метод в своем предыдущем коде, нет проблем, но на этот раз он ничего не показывает – Sahadev

+1

Не могли бы вы опубликовать полный рабочий пример (возможно, разделенный на основные части) вашего кода? – Pedru

ответ

0
self.inttype = IntVar() 
self.setrandom = Checkbutton(self.userpanel, text='Random', variable=self.inttype, onvalue=1, offvalue=0) 
self.setrandom.grid(row=5, column=2, sticky=EW) 

Вы видите, какие изменения я сделал? Я только что добавил аргумент onvalue. Недостаточно определить только переменную. Вы должны установить значение, которое оно должно принять, когда оно будет выбрано.

+0

Я также проверил этот метод, но он принимает значение 0 bydefault – Sahadev

+0

Проверьте, когда вы печатаете значение.Если перед изменением флажка будет отображаться пустая строка. Попробуйте установить для него значение по умолчанию. –

+0

Я напечатал это значение после проверки checkbutton, но значение stills равно 0 – Sahadev

0

Есть ли конкретная причина, по которой вы используете tk.IntVar() для контрольной кнопки, когда вы не используете параметры «onvalue»/«offvalue» при создании Checkbutton?

Если вы просто хотите видеть true/false значения для ваших штатов, используйте tk.BooleanVar().

Обратите внимание, что значения по умолчанию для кнопок True/False.

Если вы используете tk.IntVar(), вы ничего не увидите, если не указали onvalue/offvalue.

См. Рабочий код прилагается.


import Tkinter as tk 

root = tk.Tk() 

checked = tk.BooleanVar() 
i_checked = tk.IntVar() 
s_checked = tk.StringVar() 
s_checked.set("off") 

def cb_checked(event=None): 
    global checked 
    print("Test Checkbutton Value: {}".format(checked.get())) 

def cb_i_checked(event=None): 
    global i_checked 
    print("Integer Checkbutton Value: {}".format(i_checked.get())) 

def cb_s_checked(event=None): 
    global s_checked 
    print("String Checkbutton Value: {}".format(s_checked.get())) 

chkbtn_test = tk.Checkbutton(root, text="Test", variable=checked, command=cb_checked) 
chkbtn_test.grid(row=0) 

chkbtn_int = tk.Checkbutton(root, text="Integer", variable=i_checked, onvalue=2, offvalue=-2, command=cb_i_checked) 
chkbtn_int.grid(row=1) 

chkbtn_string = tk.Checkbutton(root, text="String", variable=s_checked, onvalue="on", offvalue="off", command=cb_s_checked) 
chkbtn_string.grid(row=2) 

root.mainloop() 

Выход добавлен за пределы.

Output of above code

+0

Я использовал этот же метод, но значение пустое при его проверке. Использование BooleanVar() Я получаю False, если отмечен или нет Checkbutton – Sahadev

+0

Я отредактировал свой ответ, чтобы показать ожидаемое поведение – R4PH43L

Смежные вопросы