繁体   English   中英

使用按钮从文本框中获取 Append combobox 值

[英]Append combobox values from textbox using a button

使用 Python 我创建了一个带有空 ComboBox、TextBox 和一个按钮的框架。 我的 ComboBox 值取自初始为空的列表 acitivity_list 。 我正在寻找一种解决方案,用户可以在其中将文本插入 TextBox 和 append List activity_list,以便通过单击按钮显示在 ComboBox 中。

我未能实现 append() function 来更新列表。 我的目标是有一个功能,我在文本框中写下活动的名称,单击“添加”按钮,它会出现在我的 ComboBox 中。

谢谢你。

from tkinter import *
from tkinter import ttk


class Activity:
    def __init__(self,root):
        self.root=root
        self.root.title("database")
        self.root.geometry("1350x700+0+0")
        title=Label(self.root, text="Daily Activities Database", font=("Calibri",40,"bold"))
        title.pack(side=TOP)

#ComboBox 
        activity_list = []
        Frame1=Frame(self.root,bd=4, relief=RIDGE)
        Frame1.place(x=20, y=75, width=355, height=560 )
        combo_activity=ttk.Combobox(Frame1, font=("Calibri",20))
        combo_activity["values"]= activity_list
        combo_activity.grid(row=10, column=1, padx=20, pady=10)
#Textbox
        txt_act=Entry(Frame1, font=("Calibir",20))
        txt_act.grid(row=11, column=1, padx=20, pady=20)
#Button
        bt1 = ttk.Button(Frame1, text = "Add")
        bt1.grid(row=12, column=1, padx=20, pady=20)

root=Tk()
ob=Activity(root)
root.mainloop()  

添加单击添加时触发的实例方法。 在 function 中,将用户输入添加到activity_list中,然后更新combo_activityvalues选项。

但是,需要将一些局部变量改为实例变量,否则在新的function内部无法访问:

from tkinter import *
from tkinter import ttk

class Activity:
    def __init__(self, root):
        self.root = root
        self.root.title("database")
        self.root.geometry("1350x700+0+0")
        title=Label(self.root, text="Daily Activities Database", font=("Calibri",40,"bold"))
        title.pack(side=TOP)

        Frame1 = Frame(self.root,bd=4, relief=RIDGE)
        Frame1.place(x=20, y=75, width=355, height=560 )

        #ComboBox 
        self.activity_list = []
        self.combo_activity = ttk.Combobox(Frame1, font=("Calibri",20))
        self.combo_activity["values"] = self.activity_list
        self.combo_activity.grid(row=10, column=1, padx=20, pady=10)
        #Textbox
        self.txt_act = Entry(Frame1, font=("Calibir",20))
        self.txt_act.grid(row=11, column=1, padx=20, pady=20)
        #Button
        bt1 = ttk.Button(Frame1, text="Add", command=self.add_activity) # added command option
        bt1.grid(row=12, column=1, padx=20, pady=20)

    def add_activity(self):
        activity = self.txt_act.get().strip()
        if activity:
            self.activity_list.append(activity)
            self.combo_activity["values"] = self.activity_list

root = Tk()
ob = Activity(root)
root.mainloop()

谢谢你的帮助。 我已经像这样调整了代码,框架的按钮消失了。 也许缩进有问题?

from tkinter import *
from tkinter import ttk


class Activity:
    def __init__(self,root):
        self.root=root
        self.root.title("database")
        self.root.geometry("1350x700+0+0")
        title=Label(self.root, text="Daily Activities Database", font=("Calibri",40,"bold"))
        title.pack(side=TOP)
     
#ComboBox 
        activity_list = []
        Frame1=Frame(self.root,bd=4, relief=RIDGE)
        Frame1.place(x=20, y=75, width=355, height=560 )
        combo_activity=ttk.Combobox(Frame1, font=("Calibri",20))
        combo_activity["values"]= activity_list
        combo_activity.grid(row=10, column=1, padx=20, pady=10)
#Textbox
        txt_act=Entry(Frame1, font=("Calibir",20))
        txt_act.grid(row=11, column=1, padx=20, pady=20)
#Button
def add_task(self):
        activity = txt_act.get()
        activity_list.append(activity)
        return activity_list
    
        bt1 = ttk.Button(Frame1, text = "Add")
        bt1.grid(row=12, column=1, padx=20, pady=20, command=add_task)


root=Tk()
ob=Activity(root)
root.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM