从列表中打印 TKinter 中的特定值

Print specific value in TKinter from list

我正在使用 Tkinter/Python 在按下按钮时获取 window 上的选定选项。单击按钮时 - 仅应打印列表中的值。截至目前,它正在打印输入到组合框中的任何值。任何 help/suggestion 将不胜感激。

from tkinter import *
from tkinter import ttk
class Run:
    def __init__(self, master):
        
        self.lst = ["Apples", "Oranges", "Pears", "Grapes"]
        self.master = master
        self.toplevels = 0
        
        master.title("CB")
        master.geometry("300x200")
        label = Label(master, text = "ABC")
        label.pack()
        
        self.combo_box = ttk.Combobox(master,value=self.lst)
        self.combo_box.set('')
        self.combo_box.pack()

        self.combo_box.bind('<KeyRelease>', self.search)

        button = Button(master, text="btn", command=self.make_new)#self.make_new)
        button.pack()
            
    def make_new(self):
        if not self.toplevels:
            #new = tk.Toplevel(self.master)
            my_label = Label(self.master, text=self.combo_box.get(), font=("Helvetica", 14))#, fg="grey")
            my_label.pack(padx=10, pady=10)
            self.toplevels += 1
            
    def search(self, event):
        value = event.widget.get()
        if value == '':
            self.combo_box['values'] = self.lst
        else:
            data = []

            for item in self.lst:
                if value.lower() in item.lower():
                    data.append(item)
            self.combo_box['values'] = data

master1 = Tk()
i = Run(master1)
master1.mainloop()

答案很简单。您只需要一个条件来检测组合框的文本是否在列表中。该条件将是:if self.combo_box.get() in self.lst:。对于更正后的代码:

from tkinter import *
from tkinter import ttk


class Run:
    def __init__(self, master):

        self.my_label = Label(master, text="")
        self.lst = ["Apples", "Oranges", "Pears", "Grapes"]
        self.master = master
        self.toplevels = 0

        master.title("CB")
        master.geometry("300x200")
        label = Label(master, text="ABC")
        label.pack()

        self.combo_box = ttk.Combobox(master, value=self.lst)
        self.combo_box.set('')
        self.combo_box.pack()

        self.combo_box.bind('<KeyRelease>', self.search)

        button = Button(master, text="btn", command=self.make_new)  # self.make_new)
        button.pack()

    def make_new(self):
        if not self.toplevels:
            # new = tk.Toplevel(self.master)
            if self.combo_box.get() in self.lst:
                self.my_label.config(text=self.combo_box.get(), font=("Helvetica", 14))  # , fg="grey")
            self.my_label.pack(padx=10, pady=10)
            self.toplevels += 1

    def search(self, event):
        value = event.widget.get()
        if value == '':

                self.combo_box['values'] = self.lst
        else:
            data = []

            for item in self.lst:
                if value.lower() in item.lower():
                    data.append(item)
            self.combo_box['values'] = data


master1 = Tk()
i = Run(master1)
master1.mainloop()

希望对您有所帮助