python - 使用 if 条件禁用 Tkiner 组合框中的某些选项
问题描述
我正在尝试构建一个简单的 gui,它有 2 个comboboxes
(比如说combo1
和combo2
)。
我希望在选择combo1
某些特定值时禁用/停用某些值combo2
。
以下是示例代码:
import ttk
root=tk.Tk()
c1_val=['0','1','2','3']
c2_val=['a','b','c']
combo1=ttk.Combobox(root,values=c1_val)
combo1.set("Select No")
combo1.place(relx=0.01,rely=0.4)
combo2=ttk.Combobox(root,values=c2_val)
combo2.set("Select No")
combo2.place(relx=0.01,rely=0.5)
var1=IntVar()
check1=tk.Checkbutton(root,text="Select1", variable=var1)
check1.place(relx=0.01,rely=0.7)
var2=IntVar()
check2=tk.Checkbutton(root,text="Select2", variable=var2)
check2.place(relx=0.4,rely=0.7)
root.mainloop()
在上面的脚本中,我想要combo1 = ['0','1']
if 的值combo2= ['a']
。
我可以在这里制作什么功能来实现这一目标?
解决方案
set
以下是a 值的示例Combobox
:
import tkinter as tk
from tkinter import ttk
def setValue(event):
print(combo.set('January'))
app = tk.Tk()
app.geometry('400x100')
labelTop = tk.Label(app,
text = "Choose your favourite month")
labelTop.grid(column=0, row=0)
combo = ttk.Combobox(app,
values=[
"January",
"February",
"March",
"April",
"May"])
combo.grid(column=0, row=1)
combo.current(1)
combo.bind("<<ComboboxSelected>>", setValue)
app.mainloop()
将此逻辑应用于您的代码,它应该可以工作
更新
要重新分配特定 的值Combobox
,请尝试以下操作:(使用与上述相同的示例)
def setValue(event):
if combo.get()=='February':
combo['values'] = ['January', 'May']
else:
combo['values'] = ['January', 'February', 'March', 'April', 'May']
推荐阅读
- maven - 使用 Maven maven-jar-plugin 将 jar 依赖目录添加到 Class-Path 清单
- runtime - Sketchware 运行时权限和我的应用程序被报告为 EVO-GEN
- flutter - Flutter:使用本地设备的 http 包连接到 localhost:5001 不起作用
- javascript - 模态框不显示文本值
- r - 导入多个凌乱的 Excel 工作表和变量
- git - 将一个分支推送到另一个分支,同时忽略 github 中的文件
- sql - 在 PL/pgSQL 函数中添加 ST_Transform
- c++ - 在 constexpr 函数中创建空右值引用是否合法?
- amazon-web-services - AWS S3 从 GUI 完成的每个操作中获取 cli 命令行
- python - 如何修复:AttributeError:“模块”对象没有属性“BluetoothSocket”