tkinter Treeview 小部件插入数据
tkinter Treeview widget inserting data
这是我的示例代码。我希望在按下回车按钮时将条目中键入的项目插入到树视图中。我是 python 和 tkinter 的新手,关于 treeview 的内容不多。
class PurchaseEntry(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
PurchaseEntry.configure(self, bg='white')
label = ttk.Label(self, text='Purchase Entry', font=LARGE_FONT2)
label.grid(row=0, columnspan=3, sticky='w')
purchase_entry = ttk.Label(self, text='Purchase Entry:')
purchase_entry.grid(row=1, column=0)
self.entry_val = tk.StringVar()
self.entry_1 = ttk.Entry(self, width=100, textvariable=self.entry_val)
self.entry_1.grid(row=1, column=2, columnspan=2, sticky='w')
self.entry_1.focus()
self.entry_btn = ttk.Button(self,text='Enter', command=self.insert_value)
self.entry_btn.grid(row=1, column=4, columnspan=2, sticky='w')
self.chat1 = ttk.Treeview(self)
chat1 = ttk.Treeview( self, height=28, columns=('dose', 'date modified'), selectmode="extended")
chat1.heading('#0', text='item', anchor=tk.CENTER)
chat1.heading('#1', text='dose', anchor=tk.CENTER)
chat1.heading('#2', text='date modified', anchor=tk.CENTER)
chat1.column('#1', stretch=tk.YES, minwidth=50, width=100)
chat1.column('#2', stretch=tk.YES, minwidth=50, width=120)
chat1.column('#0', stretch=tk.YES, minwidth=50, width=400)
chat1.grid(row=2, column=2, columnspan=4, sticky='nsew')
def insert_value(self):
value = self.entry_val.get()
# Inserts data written in the entry box to the treeview widget when Enter button is pressed.
# Clears the Entry box, ready for another data entry.
self.entry_1.delete(0, 'end')
self.chat1.insert('WHAT SHOULD I GIVE AS AN ARGUMENT?')
我应该传递什么作为参数?
或者 treeview 是适合这个的小部件,还是有人可以建议适合这个问题的小部件?谢谢
您似乎只对如何在 Tkinter.Button()
单击后将用户在 Tkinter.Entry()
小部件中键入的数据插入 ttk.Treeview()
感兴趣。
我设计了一个简单的界面来向您展示如何解决这个问题。您可以根据您的问题调整我的解决方案。
这是应用程序演示的样子:
所以我设置了一个计数器self.i
来命名项目。但是您可以为此目的添加一个标签和一个条目,并插入与其他 Tkinter.Entry()
条目类似的项目名称。
插入方式是这个:
def insert_data(self):
"""
Insertion method.
"""
self.treeview.insert('', 'end', text="Item_"+str(self.i),
values=(self.dose_entry.get() + " mg",
self.modified_entry.get()))
# Increment counter
self.i = self.i + 1
这里的主要技巧可能是使用 get()
方法检索用户键入的数据,该方法由 self.dose_entry.get()
和 self.dose_modified.get()
操作表示。
大功告成,您现在需要将此方法绑定到要按下的按钮,以使用 command
选项触发插入操作:
self.submit_button = Tkinter.Button(self.parent, text="Insert",
command=self.insert_data)
完整节目:
'''
Created on Mar 21, 2016
@author: Bill Begueradj
'''
try:
import Tkinter
import ttk
except ImportError: # Python 3
import tkinter as Tkinter
import tkinter.ttk as ttk
class Begueradj(Tkinter.Frame):
'''
classdocs
'''
def __init__(self, parent):
'''
Constructor
'''
Tkinter.Frame.__init__(self, parent)
self.parent=parent
self.initialize_user_interface()
def initialize_user_interface(self):
"""Draw a user interface allowing the user to type
items and insert them into the treeview
"""
self.parent.title("Canvas Test")
self.parent.grid_rowconfigure(0, weight=1)
self.parent.grid_columnconfigure(0, weight=1)
self.parent.config(background="lavender")
# Define the different GUI widgets
self.dose_label = Tkinter.Label(self.parent, text="Dose:")
self.dose_entry = Tkinter.Entry(self.parent)
self.dose_label.grid(row=0, column=0, sticky=Tkinter.W)
self.dose_entry.grid(row=0, column=1)
self.modified_label = Tkinter.Label(self.parent,
text="Date Modified:")
self.modified_entry = Tkinter.Entry(self.parent)
self.modified_label.grid(row=1, column=0, sticky=Tkinter.W)
self.modified_entry.grid(row=1, column=1)
self.submit_button = Tkinter.Button(self.parent, text="Insert",
command=self.insert_data)
self.submit_button.grid(row=2, column=1, sticky=Tkinter.W)
self.exit_button = Tkinter.Button(self.parent, text="Exit",
command=self.parent.quit)
self.exit_button.grid(row=0, column=3)
# Set the treeview
self.tree = ttk.Treeview(self.parent,
columns=('Dose', 'Modification date'))
self.tree.heading('#0', text='Item')
self.tree.heading('#1', text='Dose')
self.tree.heading('#2', text='Modification Date')
self.tree.column('#1', stretch=Tkinter.YES)
self.tree.column('#2', stretch=Tkinter.YES)
self.tree.column('#0', stretch=Tkinter.YES)
self.tree.grid(row=4, columnspan=4, sticky='nsew')
self.treeview = self.tree
# Initialize the counter
self.i = 0
def insert_data(self):
"""
Insertion method.
"""
self.treeview.insert('', 'end', text="Item_"+str(self.i),
values=(self.dose_entry.get() + " mg",
self.modified_entry.get()))
# Increment counter
self.i = self.i + 1
def main():
root=Tkinter.Tk()
d=Begueradj(root)
root.mainloop()
if __name__=="__main__":
main()
注:
我在 Python 2.7 中对此进行了编码,但如果您使用 Python 3.x.
它应该可以工作
这是我的示例代码。我希望在按下回车按钮时将条目中键入的项目插入到树视图中。我是 python 和 tkinter 的新手,关于 treeview 的内容不多。
class PurchaseEntry(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
self.controller = controller
PurchaseEntry.configure(self, bg='white')
label = ttk.Label(self, text='Purchase Entry', font=LARGE_FONT2)
label.grid(row=0, columnspan=3, sticky='w')
purchase_entry = ttk.Label(self, text='Purchase Entry:')
purchase_entry.grid(row=1, column=0)
self.entry_val = tk.StringVar()
self.entry_1 = ttk.Entry(self, width=100, textvariable=self.entry_val)
self.entry_1.grid(row=1, column=2, columnspan=2, sticky='w')
self.entry_1.focus()
self.entry_btn = ttk.Button(self,text='Enter', command=self.insert_value)
self.entry_btn.grid(row=1, column=4, columnspan=2, sticky='w')
self.chat1 = ttk.Treeview(self)
chat1 = ttk.Treeview( self, height=28, columns=('dose', 'date modified'), selectmode="extended")
chat1.heading('#0', text='item', anchor=tk.CENTER)
chat1.heading('#1', text='dose', anchor=tk.CENTER)
chat1.heading('#2', text='date modified', anchor=tk.CENTER)
chat1.column('#1', stretch=tk.YES, minwidth=50, width=100)
chat1.column('#2', stretch=tk.YES, minwidth=50, width=120)
chat1.column('#0', stretch=tk.YES, minwidth=50, width=400)
chat1.grid(row=2, column=2, columnspan=4, sticky='nsew')
def insert_value(self):
value = self.entry_val.get()
# Inserts data written in the entry box to the treeview widget when Enter button is pressed.
# Clears the Entry box, ready for another data entry.
self.entry_1.delete(0, 'end')
self.chat1.insert('WHAT SHOULD I GIVE AS AN ARGUMENT?')
我应该传递什么作为参数? 或者 treeview 是适合这个的小部件,还是有人可以建议适合这个问题的小部件?谢谢
您似乎只对如何在 Tkinter.Button()
单击后将用户在 Tkinter.Entry()
小部件中键入的数据插入 ttk.Treeview()
感兴趣。
我设计了一个简单的界面来向您展示如何解决这个问题。您可以根据您的问题调整我的解决方案。
这是应用程序演示的样子:
所以我设置了一个计数器self.i
来命名项目。但是您可以为此目的添加一个标签和一个条目,并插入与其他 Tkinter.Entry()
条目类似的项目名称。
插入方式是这个:
def insert_data(self):
"""
Insertion method.
"""
self.treeview.insert('', 'end', text="Item_"+str(self.i),
values=(self.dose_entry.get() + " mg",
self.modified_entry.get()))
# Increment counter
self.i = self.i + 1
这里的主要技巧可能是使用 get()
方法检索用户键入的数据,该方法由 self.dose_entry.get()
和 self.dose_modified.get()
操作表示。
大功告成,您现在需要将此方法绑定到要按下的按钮,以使用 command
选项触发插入操作:
self.submit_button = Tkinter.Button(self.parent, text="Insert",
command=self.insert_data)
完整节目:
'''
Created on Mar 21, 2016
@author: Bill Begueradj
'''
try:
import Tkinter
import ttk
except ImportError: # Python 3
import tkinter as Tkinter
import tkinter.ttk as ttk
class Begueradj(Tkinter.Frame):
'''
classdocs
'''
def __init__(self, parent):
'''
Constructor
'''
Tkinter.Frame.__init__(self, parent)
self.parent=parent
self.initialize_user_interface()
def initialize_user_interface(self):
"""Draw a user interface allowing the user to type
items and insert them into the treeview
"""
self.parent.title("Canvas Test")
self.parent.grid_rowconfigure(0, weight=1)
self.parent.grid_columnconfigure(0, weight=1)
self.parent.config(background="lavender")
# Define the different GUI widgets
self.dose_label = Tkinter.Label(self.parent, text="Dose:")
self.dose_entry = Tkinter.Entry(self.parent)
self.dose_label.grid(row=0, column=0, sticky=Tkinter.W)
self.dose_entry.grid(row=0, column=1)
self.modified_label = Tkinter.Label(self.parent,
text="Date Modified:")
self.modified_entry = Tkinter.Entry(self.parent)
self.modified_label.grid(row=1, column=0, sticky=Tkinter.W)
self.modified_entry.grid(row=1, column=1)
self.submit_button = Tkinter.Button(self.parent, text="Insert",
command=self.insert_data)
self.submit_button.grid(row=2, column=1, sticky=Tkinter.W)
self.exit_button = Tkinter.Button(self.parent, text="Exit",
command=self.parent.quit)
self.exit_button.grid(row=0, column=3)
# Set the treeview
self.tree = ttk.Treeview(self.parent,
columns=('Dose', 'Modification date'))
self.tree.heading('#0', text='Item')
self.tree.heading('#1', text='Dose')
self.tree.heading('#2', text='Modification Date')
self.tree.column('#1', stretch=Tkinter.YES)
self.tree.column('#2', stretch=Tkinter.YES)
self.tree.column('#0', stretch=Tkinter.YES)
self.tree.grid(row=4, columnspan=4, sticky='nsew')
self.treeview = self.tree
# Initialize the counter
self.i = 0
def insert_data(self):
"""
Insertion method.
"""
self.treeview.insert('', 'end', text="Item_"+str(self.i),
values=(self.dose_entry.get() + " mg",
self.modified_entry.get()))
# Increment counter
self.i = self.i + 1
def main():
root=Tkinter.Tk()
d=Begueradj(root)
root.mainloop()
if __name__=="__main__":
main()
注:
我在 Python 2.7 中对此进行了编码,但如果您使用 Python 3.x.
它应该可以工作