Проблемы с созданием двух флажков в графическом интерфейсе

Я делаю проект для школы, но я застрял в точке создания нескольких флажков. Я скопировал / вставил некоторый код и бездельничал с ним, пытаясь получить два флажка, но я был не в состоянии сделать это. Флажки используют одну и ту же переменную для галочки / снятия галочки (я знаю это). Я не могу найти способ получить вторую переменную, чтобы позволить второму флажку быть отмеченным или не отмеченным в зависимости от того, отмечена ли первая галочка или нет.

from Tkinter import *

root = Tk()
root.title("Payroll")
root.resizable(width=FALSE, height=FALSE)
class App:
    def __init__(self,master):
        root.minsize(width=500, height=500)
        root.maxsize(width=500, height=500)
        self.var = IntVar()
        frame = Frame(master)
        frame.grid()
        f2 = Frame(master,width=200,height=100)
        f2.grid(row=0,column=1)
        btnSalary = Checkbutton(frame,text='Salary',variable=self.var,command=self.fx)
        btnWage = Checkbutton(frame,text='Wage',variable=self.var,command= self.fx)
        btnSalary.grid(row=0,column=0)
        btnWage.grid(row=2,column=0)
        msg1="Wage"
        self.v= Message(f2,text=msg1)
        msg2="Salary"
        self.v= Message(f2,text=msg2)
    def fx(self):
        if self.var.get():
            self.v.grid(column=1,row=0,sticky=N)
        else:
            self.v.grid_remove()
app = App(root)

root.mainloop()

1 ответ

Кнопки и радиокнопки имеют очень специфические варианты использования:

  • Вы можете использовать одну или несколько кнопок проверки, когда пользователь не может проверить ни один, ни один, или все параметры. Кнопка всегда имеет два значения: onvalue и offvalue (как правило, True а также False, отвечая на вопрос "проверено").
  • Вы бы использовали одну или несколько радиокнопок, когда пользователь может выбрать ровно один вариант из набора вариантов.

Если ваш случай выглядит так, как будто вы хотите, чтобы пользователь выбрал либо Зарплату, либо Заработную плату. Если это правда, вам нужно использовать радиокнопки, а не кнопки. Когда вы используете радиокнопки, все варианты, которые действуют как один, должны использовать один и тот же textvariable, Вот как Tkinter знает, что они работают как набор. Кроме того, вы должны дать каждому Radiobutton отдельное значение, чтобы при получении значения вы знали, какое из них выбрано.

В вашем случае виджеты могут выглядеть примерно так:

btnSalary = Radiobutton(..., variable=self.var,value="salary", ...)
btnWage = Radiobutton(...,variable=self.var, value="wage", ...)
Другие вопросы по тегам