我想将值4, 1, 7, 5, 9, 3
插入到Treeviews的Badge列中,使用column = function()
(而不是treeview.insert
)和循环
如您所见,我解压缩了每个列表,然后用Rank = record[0], Name = record[1], and Badge = example()
重新打包。我用的是values = datagrid
。我知道有更好的方法,但我需要维护这段代码。
目前在Treeview的Badge列中,我看到4, 4, 4, 4, 4, 4
。我想打印4, 1, 7, 5, 9, 3
from tkinter import *
from tkinter import ttk
ws = Tk()
ws.title('PythonGuides')
ws.geometry('400x300')
ws['bg']='#fb0'
data = [
[1,"Jack"],
[2,"Tom"],
[3,"Daniel"],
[4,"Leonard"],
[5,"Frank"],
[6,"Robert"],
]
tv = ttk.Treeview(ws)
tv['columns']=('Rank', 'Name', 'Badge')
tv.column('#0', width=0, stretch=NO)
tv.column('Rank', anchor=CENTER, width=80)
tv.column('Name', anchor=CENTER, width=80)
tv.column('Badge', anchor=CENTER, width=80)
tv.heading('#0', text='', anchor=CENTER)
tv.heading('Rank', text='Id', anchor=CENTER)
tv.heading('Name', text='rank', anchor=CENTER)
tv.heading('Badge', text='Badge', anchor=CENTER)
tv.pack()
def func1():
def example():
x = [
["4"],
["1"],
["7"],
["5"],
["9"],
["3"],
]
for a in x:
return a
for index, record in enumerate(data):
Rank = record[0]
Name = record[1]
Badge = example()
datagrid = [Rank, Name, Badge]
tv.insert(parent='', index='end', values=(datagrid))
button = Button(ws, text="Button", command = func1)
button.place(x=1, y=1)
ws.mainloop()
1条答案
按热度按时间nbnkbykc1#
在函数中使用
return
,它将始终从一开始就运行函数中的所有代码,并且始终使用列表中的第一个元素。您必须使用
yield
而不是return
。它将创建generator,并且还需要next()
从generator获取下一个值。您也可以直接在
for
中使用generator而不使用next()
(它需要在for
之后使用( )
才能正确分配zip()
中的值)但坦率地说,我会直接使用
x
,而不创建example()