Я попытался использовать checkbutton виджет вместе с булевой переменной. Когда я использовал скрипт без класса - он работал, но когда я написал приложение как класс, это не так. Вот мой код:tkinter: как связать checkbutton с переменной
from tkinter import Tk, Frame, Checkbutton, Button
class MyFrame(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.test01 = False
checkbutton = Checkbutton(parent, text='check it',
variable=self.test01, command=self.testcheck)
checkbutton.var = self.test01
checkbutton.pack()
testbutton = Button(parent, text='check test', command=self.testcheck)
testbutton.pack()
self.parent.title('Checkbutton test')
def testcheck(self):
print('Check test: ' + str(self.test01))
def main():
root = Tk()
app = MyFrame(root)
root.mainloop()
if __name__ == '__main__':
main()
На картинке вы можете увидеть терминал с выходом программы. В случае на картинке приложение было запущено, и каждая комбинация переключения кнопки проверки и нажатия кнопки теста не дала никаких результатов.
Я попытался связать переменную в конструкторе, после того как кнопка была построена, и то и другое - без результатов.
Пожалуйста, дайте мне знать, как это сделать.
Заранее благодарен.
вы не можете использовать обычную переменную в качестве значения опции 'variable'. Вы должны использовать одну из специальных переменных tkinter ('StringVar',' BooleanVar' и т. Д.). –
Спасибо. Я прочитал ответ ниже (1), и он работает как шарм! – khaz