Cambio de valores de un ttk.combobox usando ttk.radiobuttons - Python
Pregunta
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)
Esto es lo que tengo hasta ahora, creo que probablemente necesitaría ponerlo en un bucle o algo para que cambie los valores, pero no sé cómo haría eso.He estado tratando de hacer esto durante mucho tiempo, así que cualquier ayuda sería increíble.Gracias
Solución
Pude resolver este problema al dar comandos a los radiobutones:
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)
Probablemente haya una mejor manera de hacerlo, sin usar funciones, pero esto hace exactamente lo que está destinado a hacer.Espero que esto pueda ser útil para cualquier persona que tenga el mismo problema.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow