TTK.RadioButons를 사용하여 TTK.ComboBox의 값 변경 - 파이썬
문제
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)
.
이것은 내가 지금까지 가지고있는 것입니다. 나는 아마도 가치를 바꾸기 위해 루프 또는 무언가에 넣을 필요가있을 것 같지만 내가 어떻게 할 것인지 모르겠습니다.나는 지금 오랫동안 이것을하려고 노력해 왔습니다. 그래서 어떤 도움이 될 것입니다.고맙습니다
해결책
RadioButtons에 명령을 제공 하여이 문제를 해결할 수있었습니다.
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)
.
함수를 사용하지 않고도 더 좋은 방법은 더 좋은 방법이지만, 이것은 그것이 무엇을 할 것인지 정확히 수행합니다.나는 이것이 같은 문제가있는 사람에게 이것을 유용 할 수 있기를 바랍니다.
제휴하지 않습니다 StackOverflow