如何在使用python从Mysql表中获取的Tkinter treeview中显示数据

时间:2016-04-03 11:07:51

标签: python mysql tkinter treeview

我已经使用treeview创建了一个表,我想插入从mysql table中获取的数据。如果有人可以帮助我,因为我已经尝试了所有级别,但仍然徒劳无功。这句话tree.insert("", 1, text=2, values=("name", "5", "5"))可以插入井数据但不能从数据库中插入,但我想从数据库中获取并显示它。 这是我尝试过的代码,但它失败了。请帮助。 `

from Tkinter import *
import ttk
import MySQLdb

root = Tk()
root.geometry("320x240")

tree = ttk.Treeview(root)

conn = MySQLdb.connect("localhost", "root", "drake", "OSCAR")
cursor = conn.cursor()

tree["columns"] = ("one", "two", "three")
tree.column("one", width=100)
tree.column("two", width=100)
tree.column("three", width=100)

tree.heading("#0", text='ID', anchor='w')
tree.column("#0", anchor="w")
tree.heading("one", text="NAME")
tree.heading("two", text="VOTES")
tree.heading("three", text="PERSENTAGE")

for i in range(1, 6):
    cursor.execute("""select name from president where ID =%s""", (i,))
    nm = cursor.fetchone()[0]
    cursor.execute("""select votes from president where ID =%s""", (i,))
    vot = cursor.fetchone()[0]
    cursor.execute("""select percentage from president where ID =%s""",(i,))
    percent = cursor.fetchone()[0]

    tree.insert("", i, text=i, values=(nm, vot, percent)),

tree.pack()
root.mainloop()

`

2 个答案:

答案 0 :(得分:1)

iv使用sqlite3而不是MySQL,但我假设从sql返回的值被放入一个多维数组中,这些数组需要多个索引,例如

array[0][1]

以下代码用于修改树

for i in self.tree.get_children():
    self.tree.delete(i) #clears current values from tree

for student in StudentList:
    self.tree.insert("" , 0,values=(student[0],student[1])
    #the index used would depend on what you want to be put into the tree
    #only uses one index per value instead of two as the for loop changes the first index

请注意,这是从我的课程(预订系统)中复制的,因此使用了名称

答案 1 :(得分:1)

要解决您的问题,首先您需要使用此查询读取数据库的所有行:

SELECT * FROM president

您需要执行:

cursor.execute("""SELECT * FROM president""")

现在,只需循环遍历行并在tree

中逐个插入

<强>更新

我想你的表结构是这样的:

ID | name | votes | percentage

所以你可以运行这个:

cpt = 0 # Counter representing the ID of your code.
for row in cursor:
   # I suppose the first column of your table is ID
   tree.insert('', 'end', text=str(cpt), values=(row[1], row[2], row[3]))
   cpt += 1 # increment the ID