首页 > 解决方案 > 使用 if 条件禁用 Tkiner 组合框中的某些选项

问题描述

我正在尝试构建一个简单的 gui,它有 2 个comboboxes(比如说combo1combo2)。

我希望在选择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']

我可以在这里制作什么功能来实现这一目标?

标签: pythontkinter

解决方案


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']

推荐阅读