Alterando os valores de uma ttk.Caixa de combinação usando ttk.Radiobuttons - Python

StackOverflow https://stackoverflow.com//questions/21056160

  •  22-12-2019
  •  | 
  •  

Pergunta

def alarmIDList(self, alarms):
        carAlarmIDs = []
        houseAlarmIDs = []
        alarmIDs = []
        listDefault = StringVar()
        listDefault.set("Select ID")

        for alarm in alarms:
            alarmIDs.append(alarm.getID())
            if isinstance(alarm, CarAlarm):
                carAlarmIDs.append(alarm.getID())
            elif isinstance(alarm, HouseAlarm):
                houseAlarmIDs.append(alarm.getID())

        self.alarmType = StringVar()
        self.alarmType.set("alarmIDs")
        allAlarms = ttk.Radiobutton(self.master, text="All", variable=self.alarmType,
                                    value="alarmIDs").place(x=10, y=30)
        carAlarms = ttk.Radiobutton(self.master, text="Car Alarms", variable=self.alarmType,
                                    value="carAlarmIDs").place(x=10, y=50)
        houseAlarms = ttk.Radiobutton(self.master, text="House Alarms", variable=self.alarmType,
                                    value="houseAlarmIDs").place(x=10, y=70)

        cbox = ttk.Combobox(self.master, textvariable=listDefault,
                            state='readonly', height=10, width=10)

        if self.alarmType.get() == "alarmIDs":
            cbox['values'] = alarmIDs
        elif self.alarmType.get() == "carAlarmIDs":
            cbox['values'] = carAlarmIDs
        elif self.alarmType.get() == "houseAlarmIDs":
            cbox['values'] = houseAlarmIDs

        cbox.place(x = 120, y = 75)

É isso que eu fiquei tão longe, eu acho que eu provavelmente teria de colocá-lo em um loop ou algo para alterar os valores, mas eu não sei como eu faria isso.Eu tenho tentado fazer isso por um longo tempo agora, então qualquer ajuda seria incrível.Obrigado

Foi útil?

Solução

Eu era capaz de resolver esse problema, dando comandos para o Instalar:

def allAlarms():
    listDefault.set("Select ID")
    cbox['values'] = alarmIDs
def carAlarms():
    listDefault.set("Select ID")
    cbox['values'] = carAlarmIDs
def houseAlarms():
    listDefault.set("Select ID")
    cbox['values'] = houseAlarmIDs

allAlarms = ttk.Radiobutton(self.master, text="All", variable=self.alarmType,
                            value="alarmIDs", command=allAlarms).place(x=10, y=30)

carAlarms = ttk.Radiobutton(self.master, text="Car Alarms", variable=self.alarmType,
                            value="carAlarmIDs", command=carAlarms).place(x=10, y=50)

houseAlarms = ttk.Radiobutton(self.master, text="House Alarms", variable=self.alarmType,
                              value="houseAlarmIDs", command=houseAlarms).place(x=10, y=70)

Provavelmente há uma maneira melhor de fazê-lo, sem o uso de funções, mas isso não faz exatamente o que ele deve fazer.Espero que este pode ser útil para quem tem o mesmo problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top