我正在嘗試使用 tkinter,更具體地說是 customtkinter,來創建一個組合框,并在第一個組合框中有一個變數來確定另一個組合框的選項是什么。我認為語法可能有點不同,因為它是 customtkinter 而不是標準的。看看是否有人可以看看我的代碼。
這是該課程的片段:
# ---------------- HP Pool Option --------------#
#HP pool values
#Low
hp_low_options = ["Random",
"5","10","15","20",
"25","30","35","40",
"45","50","55","60",
"65","70","75","80",
"85","90","95","100",
]
#Medium
hp_medium_options = ["Random",
"105","110","115","120",
"125","130","135","140",
"145","150","155","160",
"165","170","175","180",
"185","190","195","200",
]
#Large
hp_high_options = ["Random",
"205","210","215","220",
"225","230","235","240",
"245","250","255","260",
"265","270","275","280",
"285","290","295","300",
]
#Extreme
hp_extreme_options = ["Random",
"325","350","375","400",
"425","450","475","500",
"525","550","575","600",
"625","650","675","700",
"725","750","775","800",
]
#Create first combobox for pool type
hp_pool_label = customtkinter.CTkLabel(master=self.frame_left, text="HP Option")
hp_pool_label.grid(row=5,column=0)
current_hp_pool = StringVar() #initialize variable
hp_pool_combobox = customtkinter.CTkComboBox(master=self.frame_left,
variable=current_hp_pool, #set variable in combobox
values=("Random",
"Low HP Pool",
"Medium HP Pool",
"High HP Pool",
"Extreme HP Pool"))
hp_pool_combobox.grid(row=5, column=1)
#This is where the problems start I think
hp_pool_combobox.set("Random")
hp_pool_combobox.setvar("Test", current_hp_pool)
current_hp_pool = hp_pool_combobox.current_value
if current_hp_pool == "Random":
hp_pool_selected = (hp_low_options,
hp_medium_options,
hp_high_options,
hp_extreme_options)
elif current_hp_pool == "Low HP Pool":
hp_pool_selected = hp_low_options
elif current_hp_pool == "Medium HP Pool":
hp_pool_selected = hp_medium_options
elif current_hp_pool == "High HP Pool":
hp_pool_selected = hp_high_options
elif current_hp_pool == "Extreme HP Pool":
hp_pool_selected = hp_extreme_options
hp_value_combobox = customtkinter.CTkComboBox(master=self.frame_left, values=hp_pool_selected)
hp_value_combobox.grid(row=5, column=2)
hp_value_combobox.set("Random")
I think creating an even of some sort is the answer so when the new option is selected the event triggers and changes the second combobox options. 感謝您的時間和精力!
uj5u.com熱心網友回復:
一種方法是根據回呼內第一個組合框的選定值設定command選項并更新第二個組合框。CTkCombobox
下面是一個例子:
import customtkinter as ctk
options = {
'Low': ('5', '10'),
'Medium': ('15', '20'),
'High': ('25', '30'),
'Extreme': ('35', '40')
}
def on_combo1_selected(value):
values = ('Random',)
if value == 'Random':
for v in options.values():
values = v
else:
values = options[value]
combo2.configure(values=values)
combo2.set('')
root = ctk.CTk()
var1 = ctk.StringVar()
combo1 = ctk.CTkComboBox(root, variable=var1, values=('Random',) tuple(options.keys()), command=on_combo1_selected)
combo1.pack()
var2 = ctk.StringVar()
combo2 = ctk.CTkComboBox(root, variable=var2)
combo2.pack()
root.mainloop()
您可以將邏輯應用于您的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/490119.html
