如何 insert/set Tkinter TkTable 中的数据
How to insert/set data in a Tkinter TkTable
我无法按照 TkTable 文档了解如何将预定义值插入 Tkinter GUI 的 TkTable。文档:https://www.eso.org/projects/vlt/sw-dev/tcl8.3.3/tktable2.7/tkTable.html
我对此进行了研究,但一直无法在任何地方找到有关如何将预定义值插入 TkTable 的 suitable 答案记录...这是我发现的一个未回答的问题:
set value into tktable
有人知道这是怎么做到的吗?
这是我的示例代码,是从下载 TkTable 后提供的示例派生的(我可以将 1 只狗设置到 table,但我不知道如何使用 set 方法成功迭代列表以一个接一个地插入单元格):
import tkinter as tk
import tktable
def table_test():
#### DEFINES THE GUI ####
master = tk.Tk()
master.geometry('800x800+250+200')
master.title('Dogs')
#### SETS THE DOG INTO THE TABLE ####
def callback_dogs(event):
values = ['Doodle','Pug','Westie','Poodle']
for item in values:
return item
#### DEFINING THE TKTABLE ####
tb = tktable.Table(master, state='disabled', width=15, titlerows=1, rows=3, cols=2, command=callback_dogs)
tb.pack(expand=1)
#### MAINLOOPING ####
master.attributes('-topmost',True)
master.after_idle(master.attributes,'-topmost',False)
tk.mainloop()
table_test()
好吧,在重新访问 TkTable 下载中的示例后,我通过定义 tktable.ArrayVar(master)
变量找到了解决方案。如果有更好的解决办法请post
这是我的示例,我可以开始将预先存在的数据值加载到 TkTable 中:
import tkinter as tk
import tktable
def table_test():
#### DEFINES THE INTERFACE ####
master = tk.Tk()
master.geometry('500x200+250+200')
master.title('Dogs')
#### DEFINING THE TABLE ####
tb = tktable.Table(master,
state='disabled',
width=50,
titlerows=1,
rows=5,
cols=4,
colwidth=20)
columns = ['Breed','Price','Location','Age']
#### LIST OF LISTS DEFINING THE ROWS AND VALUES IN THOSE ROWS ####
values = [['Doodle','1500','Chicago','1'],
['Pug','700','Kansas City','2'],
['Westie','1000','Lincoln','1'],
['Poodle','900','Atlanta','2']]
#### SETS THE DOGS INTO THE TABLE ####
#### VVVVVVVVVVVVVVVVVVVVVVVVVVV ####
#DEFINING THE VAR TO USE AS DATA IN TABLE
var = tktable.ArrayVar(master)
row_count=0
col_count=0
#SETTING COLUMNS
for col in columns:
index = "%i,%i" % (row_count,col_count)
var[index] = col
col_count+=1
row_count=1
col_count=0
#SETTING DATA IN ROWS
for row in values:
for item in row:
print(item)
index = "%i,%i" % (row_count,col_count)
## PLACING THE VALUE IN THE INDEX CELL POSITION ##
var[index] = item
#### IGNORE THIS IF YOU WANT, JUST SETTING SOME CELL COLOR ####
try:
if int(item) > 999:
tb.tag_cell('green',index)
except:
pass
###############################################################
col_count+=1
col_count=0
row_count+=1
#### ABOVE CODE SETS THE DOG INTO THE TABLE ####
################################################
#### VARIABLE PARAMETER SET BELOW ON THE 'TB' USES THE DATA DEFINED ABOVE ####
tb['variable'] = var
tb.pack()
#tb.tag_cell('green',index)
tb.tag_configure('green', background='green')
#### MAINLOOPING ####
tk.mainloop()
table_test()
我无法按照 TkTable 文档了解如何将预定义值插入 Tkinter GUI 的 TkTable。文档:https://www.eso.org/projects/vlt/sw-dev/tcl8.3.3/tktable2.7/tkTable.html
我对此进行了研究,但一直无法在任何地方找到有关如何将预定义值插入 TkTable 的 suitable 答案记录...这是我发现的一个未回答的问题: set value into tktable
有人知道这是怎么做到的吗?
这是我的示例代码,是从下载 TkTable 后提供的示例派生的(我可以将 1 只狗设置到 table,但我不知道如何使用 set 方法成功迭代列表以一个接一个地插入单元格):
import tkinter as tk
import tktable
def table_test():
#### DEFINES THE GUI ####
master = tk.Tk()
master.geometry('800x800+250+200')
master.title('Dogs')
#### SETS THE DOG INTO THE TABLE ####
def callback_dogs(event):
values = ['Doodle','Pug','Westie','Poodle']
for item in values:
return item
#### DEFINING THE TKTABLE ####
tb = tktable.Table(master, state='disabled', width=15, titlerows=1, rows=3, cols=2, command=callback_dogs)
tb.pack(expand=1)
#### MAINLOOPING ####
master.attributes('-topmost',True)
master.after_idle(master.attributes,'-topmost',False)
tk.mainloop()
table_test()
好吧,在重新访问 TkTable 下载中的示例后,我通过定义 tktable.ArrayVar(master)
变量找到了解决方案。如果有更好的解决办法请post
这是我的示例,我可以开始将预先存在的数据值加载到 TkTable 中:
import tkinter as tk
import tktable
def table_test():
#### DEFINES THE INTERFACE ####
master = tk.Tk()
master.geometry('500x200+250+200')
master.title('Dogs')
#### DEFINING THE TABLE ####
tb = tktable.Table(master,
state='disabled',
width=50,
titlerows=1,
rows=5,
cols=4,
colwidth=20)
columns = ['Breed','Price','Location','Age']
#### LIST OF LISTS DEFINING THE ROWS AND VALUES IN THOSE ROWS ####
values = [['Doodle','1500','Chicago','1'],
['Pug','700','Kansas City','2'],
['Westie','1000','Lincoln','1'],
['Poodle','900','Atlanta','2']]
#### SETS THE DOGS INTO THE TABLE ####
#### VVVVVVVVVVVVVVVVVVVVVVVVVVV ####
#DEFINING THE VAR TO USE AS DATA IN TABLE
var = tktable.ArrayVar(master)
row_count=0
col_count=0
#SETTING COLUMNS
for col in columns:
index = "%i,%i" % (row_count,col_count)
var[index] = col
col_count+=1
row_count=1
col_count=0
#SETTING DATA IN ROWS
for row in values:
for item in row:
print(item)
index = "%i,%i" % (row_count,col_count)
## PLACING THE VALUE IN THE INDEX CELL POSITION ##
var[index] = item
#### IGNORE THIS IF YOU WANT, JUST SETTING SOME CELL COLOR ####
try:
if int(item) > 999:
tb.tag_cell('green',index)
except:
pass
###############################################################
col_count+=1
col_count=0
row_count+=1
#### ABOVE CODE SETS THE DOG INTO THE TABLE ####
################################################
#### VARIABLE PARAMETER SET BELOW ON THE 'TB' USES THE DATA DEFINED ABOVE ####
tb['variable'] = var
tb.pack()
#tb.tag_cell('green',index)
tb.tag_configure('green', background='green')
#### MAINLOOPING ####
tk.mainloop()
table_test()