从列表中打印 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()
希望对您有所帮助
我正在使用 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()
希望对您有所帮助