使用tkintertable控件建立tkinter的表格——支持拖拽、编辑等功能。

源码原始链接:https://github.com/dmnfarrell/tkintertable

教程链接:https://github.com/dmnfarrell/tkintertable/wiki/Usage
这是一个简单的小例子:

安装tkintertable

pip install tkintertable

简单使用:

from tkintertable import TableCanvas, TableModel
import tkinter as tk
root=tk.Tk()
tframe = tk.Frame(root)
tframe.pack()
table = TableCanvas(tframe)
table.show()
model = TableModel()
table = TableCanvas(tframe, model=model)
table = TableCanvas(tframe, model,
            cellwidth=60, cellbackgr='#e3f698',
            thefont=('Arial',12),rowheight=18, rowheaderwidth=30,
            rowselectedcolor='yellow', editable=True)


root.mainloop()

如果你熟悉tkinter,会发现这个表格是一个控件,就像其他的按钮、标签一样插进去就可以了。
下面显示一下效果:
(还有一个右键菜单的,但是截屏没法截下来。):使用tkintertable控件建立tkinter的表格——支持拖拽、编辑等功能。_第1张图片

直接从.csv中读取数据:

from tkintertable.Testing import sampledata
data=sampledata()
#print(data)

class TestApp(Frame):
    """Basic test frame for the table"""

    def __init__(self, parent=None):
        self.parent = parent
        Frame.__init__(self)
        self.main = self.master
        self.main.geometry('800x500+200+100')
        self.main.title('Test')
        f = Frame(self.main)
        f.pack(fill=BOTH,expand=1)
        table = TableCanvas(f)
        table.importCSV('....(csv路径)/test.csv')
        print (table.model.columnNames)
        table.show()
        return

app=TestApp()
app.mainloop()

csv中文件内容:
使用tkintertable控件建立tkinter的表格——支持拖拽、编辑等功能。_第2张图片

表格显示效果:
使用tkintertable控件建立tkinter的表格——支持拖拽、编辑等功能。_第3张图片
字体并不美观,原因是我使用linux默认字体演示的。如果换个字体,效果就会更好。

直接导入.xls的方法目前我还不知道……

插入以及删除数据

初始的时候有十行五列,因此行索引在0~9,列索引在0~4都是 可以的。如果要超出的话,就会报错。
示例代码:

from tkintertable import TableCanvas, TableModel
from tkinter import *
import random
#from collections import OrderedDict

class TestApp(Frame):
    """Basic test frame for the table"""

    def __init__(self, parent=None):
        self.parent = parent
        Frame.__init__(self)
        self.main = self.master
        self.main.geometry('800x500+200+100')
        self.main.title('Test')
        f = Frame(self.main)
        f.pack(fill=BOTH,expand=1)
        
        table = TableCanvas(f)
        
        data=table.model.data
        table.model.setValueAt(123,3,4)
        table.model.setValueAt('hahaha',2,4)
        table.model.setValueAt(repr(type('haha')),1,4)
        
        
        print (table.model.columnNames)
        table.show()
        return

app=TestApp()
app.mainloop()

效果如图:
使用tkintertable控件建立tkinter的表格——支持拖拽、编辑等功能。_第4张图片
注意,插入类型如果不是字符串或数字的话,就极易报错。因此注意,一定要用repr()方法规范一下形式。

插入行、列

from tkintertable import TableCanvas, TableModel
from tkinter import *
import random
#from collections import OrderedDict

class TestApp(Frame):
    """Basic test frame for the table"""

    def __init__(self, parent=None):
        self.parent = parent
        Frame.__init__(self)
        self.main = self.master
        self.main.geometry('800x500+200+100')
        self.main.title('Test')
        f = Frame(self.main)
        f.pack(fill=BOTH,expand=1)
        
        table = TableCanvas(f)
        
        data=table.model.data
        table.show()# 注意,先show()完了之后再添加行和列,否则会报错。
        
        for i in range(3):        
            table.addColumn('add%d'%i)
        for i in range(4):
            table.addRow()
        print (table.model.columnNames)
        
        return

app=TestApp()
app.mainloop()

可以看到成功的又多了几行。不过请注意,table.show()之后才能插入行和列,要不是不行的!
使用tkintertable控件建立tkinter的表格——支持拖拽、编辑等功能。_第5张图片

表头的编辑可以直接在表格显示之后右键……

你可能感兴趣的:(界面设计,NovalIDE,tkinter)