如何将一组组合框重置回无选择tkinter?

问题描述 投票:0回答:1

我将 ttkbootstrap 与 tkinter 一起使用,并且我有 15 个 ttkbootstrap 组合框,如果按下按钮,我想将它们重置为无选择。我尝试了在某处找到的这段代码,但它什么也没做。我确实验证了我正在使用 print 语句调用该函数:

import tkinter
from tkinterr import *
import ttkbootstrap as ttk

def clear():
    print("In the clear function!)
    if isinstance(Widget, ttk.combobox):
    Widget.delete(0,end)

我假设 Widget 没有正确定义,这就是问题所在?我尝试使用 Combobox 和 ComboBoxWidget,然后尝试命名一个小部件实例,但似乎没有任何效果。

我将所有组合框放在一个类中,这样我就可以将 self 传递给其他方法。

The button code is:
    self.clear_button = ttk.Button(button_frame),
    command = lambda: clear(),
etc...

我知道我可以使用以下方法重置单个组合框:

 def clear_combo():
        combobox.delete(0, "end")

我可以通过唯一的名称循环遍历每个组合框,但我一直在寻找更好的解决方案,因为这看起来很笨拙。有没有办法为此通用选择特定类型的 ttk 小部件?

python tkinter combobox ttkbootstrap
1个回答
0
投票

如果您可以将所有组合框放入一个框架中,那么您可以要求框架为您提供其所有子小部件,并且您可以循环遍历它们。

这是一个例子:

import tkinter as tk
from tkinter import ttk

def clear():
    for widget in combo_frame.winfo_children():
        if isinstance(widget, ttk.Combobox):
            widget.set("")

root = tk.Tk()
combo_frame = tk.Frame(root, bd=2, relief="groove")
combo_frame.pack(side="top", fill="x")

clear_button = tk.Button(combo_frame, text="clear", command=clear)
clear_button.pack(side="top")
for i in range(10):
    combo = ttk.Combobox(combo_frame, values=("one", "two", "three"))
    combo.pack(side="top", anchor="w")

tk.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.