Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在tkinter中放置帧以在表中显示数据?_Python_Python 3.x_Tkinter - Fatal编程技术网

Python 如何在tkinter中放置帧以在表中显示数据?

Python 如何在tkinter中放置帧以在表中显示数据?,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我需要在tkinter中使用帧或网格在表中显示数据。 我已经在tkinter窗口中显示了数据,但我想将其放在一个表中,因此任何人都可以帮助我处理代码(以及滚动条) 代码如下: def allClub(): data=cursor.execute("SELECT * from CLUBS order by club_name") master = Tk() master.geometry('500x500')

我需要在tkinter中使用帧或网格在表中显示数据。 我已经在tkinter窗口中显示了数据,但我想将其放在一个表中,因此任何人都可以帮助我处理代码(以及滚动条)

代码如下:

       def allClub():
            data=cursor.execute("SELECT * from CLUBS order by club_name")


            master = Tk()
            master.geometry('500x500')
            master.title('CLUBS')
            Label1 = Label(master, text="CLUB ID", width=10)
            Label1.grid(row=0, column=0)
            Label2 = Label(master, text="CLUB NAME", width=10)
            Label2.grid(row=0, column=1)
            Label3 = Label(master, text="RATING", width=10)
            Label3.grid(row=0, column=2)
            Label1 = Label(master, text="MANAGER", width=10)
            Label1.grid(row=0, column=3)
            Label1 = Label(master, text="CHAIRMAN", width=10)
            Label1.grid(row=0, column=4)
            Label1 = Label(master, text="LEAGUE", width=15)
            Label1.grid(row=0, column=5)
            Label1 = Label(master, text="TITLES", width=10)
            Label1.grid(row=0, column=6)
            Label1 = Label(master, text="YEAR FOUNDED", width=10)
            Label1.grid(row=0, column=7)


            for index, dat in enumerate(data):
                Label(master, text=dat[0]).grid(row=index+1, column=0)
                Label(master, text=dat[1]).grid(row=index+1, column=1)
                Label(master, text=dat[2]).grid(row=index+1, column=2)
                Label(master, text=dat[3]).grid(row=index+1, column=3)
                Label(master, text=dat[4]).grid(row=index+1, column=4)
                Label(master, text=dat[5]).grid(row=index+1, column=5)
                Label(master, text=dat[6]).grid(row=index+1, column=6)
                Label(master, text=dat[7]).grid(row=index+1, column=7)
此处是输出窗口截图的链接:

Tkinter没有任何“表”小部件,如果您计划有很多行和列,最好使用
Treeview
Listbox

另一方面,您不能为
Frame
创建滚动条,因为该小部件的文档没有说明它支持滚动。这个问题有一个解决方案,它涉及到创建画布,您可以查看它

以下是
Treeview
小部件的示例:

from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry("500x200")

data = [ ["val1", "val2", "val3"],
         ["asd1", "asd2", "asd3"],
         ["bbb1", "bbb3", "bbb4"],
         ["ccc1", "ccc3", "ccc4"],
         ["ddd1", "ddd3", "ddd4"],
         ["eee1", "eee3", "eee4"] ]


frame = Frame(root)
frame.pack()

tree = ttk.Treeview(frame, columns = (1,2,3), height = 5, show = "headings")
tree.pack(side = 'left')

tree.heading(1, text="Column 1")
tree.heading(2, text="Column 2")
tree.heading(3, text="Column 3")

tree.column(1, width = 100)
tree.column(2, width = 100)
tree.column(3, width = 100)

scroll = ttk.Scrollbar(frame, orient="vertical", command=tree.yview)
scroll.pack(side = 'right', fill = 'y')

tree.configure(yscrollcommand=scroll.set)

for val in data:
    tree.insert('', 'end', values = (val[0], val[1], val[2]) )

root.mainloop()
Tkinter没有任何“table”小部件,如果您计划有很多行和列,最好使用
Treeview
Listbox

另一方面,您不能为
Frame
创建滚动条,因为该小部件的文档没有说明它支持滚动。这个问题有一个解决方案,它涉及到创建画布,您可以查看它

以下是
Treeview
小部件的示例:

from tkinter import *
from tkinter import ttk

root = Tk()
root.geometry("500x200")

data = [ ["val1", "val2", "val3"],
         ["asd1", "asd2", "asd3"],
         ["bbb1", "bbb3", "bbb4"],
         ["ccc1", "ccc3", "ccc4"],
         ["ddd1", "ddd3", "ddd4"],
         ["eee1", "eee3", "eee4"] ]


frame = Frame(root)
frame.pack()

tree = ttk.Treeview(frame, columns = (1,2,3), height = 5, show = "headings")
tree.pack(side = 'left')

tree.heading(1, text="Column 1")
tree.heading(2, text="Column 2")
tree.heading(3, text="Column 3")

tree.column(1, width = 100)
tree.column(2, width = 100)
tree.column(3, width = 100)

scroll = ttk.Scrollbar(frame, orient="vertical", command=tree.yview)
scroll.pack(side = 'right', fill = 'y')

tree.configure(yscrollcommand=scroll.set)

for val in data:
    tree.insert('', 'end', values = (val[0], val[1], val[2]) )

root.mainloop()

您的数据似乎已在表中。你现在的东西有什么问题?我从sqlite3导入了数据,我想把数据放在一个盒子里(就像如何放置按钮,按钮上有固定的尺寸和标签显示),我仍然不明白你想要什么。你要一张“桌子”。“表”的一个常见定义是“行和列”,您已经有了。表格与现在的行和列有何不同?我的意思是,我希望数据显示在excel电子表格类型的边框中。如何获得这样的结构?您的数据似乎已经在表中。你现在的东西有什么问题?我从sqlite3导入了数据,我想把数据放在一个盒子里(就像如何放置按钮,按钮上有固定的尺寸和标签显示),我仍然不明白你想要什么。你要一张“桌子”。“表”的一个常见定义是“行和列”,您已经有了。表格与现在的行和列有何不同?我的意思是,我希望数据显示在excel电子表格类型的边框中。我怎样才能得到这样一个结构?谢谢你的回答。在另一个表中,我有300个数据,如果我显示它们,数据将不会完全显示。所以我想添加滚动条,以便我可以看到我了解的关于树的所有数据,但如何使用树显示查询?“查询”?您可以拥有任意多的列和行,并且可以使用循环将数据插入到树中。使用树显示查询??感谢您的回答。在另一个表中,我有300个数据,如果我显示它们,数据将不会完全显示。因此,我想添加滚动条,以便可以查看我了解的关于树的所有数据,但如何显示使用树进行查询?“查询”?您可以拥有任意多的列和行,并且可以使用循环将数据插入到树中。使用树显示查询??