导入的TkTable模块中的示例GUI工作正常。但是当我尝试在自己的工作中使用TkTable时,表中的每个单元格都是空的。我的测试代码在
下面from Tkinter import *
import TkTable
class App:
def __init__(self, master):
"""master is the top level window"""
master.geometry(("%dx%d")%(250,60))
master.title("Test")
frame = Frame(master)
frame.pack()
var = TkTable.ArrayVar(frame)
for y in range(6):
for x in range(6):
index = "%i,%i" % (y, x)
var[index] = index
label = Label(frame, text="test2")
label.pack(side = 'top', fill = 'x')
quit = Button(frame, text="QUIT", command=root.destroy)
quit.pack(side = 'bottom', fill = 'x')
test = TkTable.Table(frame,
rows=6,
cols=6,
state='disabled',
width=6,
height=6,
titlerows=1,
titlecols=0,
roworigin=0,
colorigin=0,
selectmode='browse',
selecttype='row',
rowstretch='unset',
colstretch='last',
flashmode='on',
variable=var,
usecommand=0)
test.pack(expand=1, fill='both')
test.tag_configure('sel', background = 'yellow')
test.tag_configure('active', background = 'blue')
test.tag_configure('title', anchor='w', bg='red', relief='sunken')
root = Tk()
app = App(root)
root.mainloop()
显示的窗口有一个包含所有空单元格的表。
我正在使用Python 2.6,Mac OS 10.6和Eclipse PyDev,尽管我认为这些都不重要。我认为重要,但我无法确定原因,我从SourceForge下载的TkTable模块中提供的示例代码(http://tkinter.unpy.net/wiki/TkTableWrapper)是以稍微不同的方式运行表。它有:
if __name__ == '__main__':
sample_test()
其中sample_test()包含
root = Tk()
和
root.mainloop()
为什么这个示例方法有效但我的方法不然?提前感谢您提供任何帮助。
答案 0 :(得分:1)
您可能希望阅读本地变量与全局变量对比实例变量!
将所有var
替换为self.var
。
答案 1 :(得分:0)
更改您的脚本:
for y in range(6):
for x in range(6):
index = "%i,%i" % (y, x)
var[index] = index
为:
for y in range(6):
for x in range(6):
index = "%i,%i" % (y, x)
var.set(index,index)