如何将数据库中的项目放入列表框

弥敦道

我试图将数据库中的所有数据放入列表框中,但目前它只获取第一行,但是当我打印相同的数据时,它会打印每一行。这就是我试图通过填充列表框来构建的内容。想象一个从表或数据库中的列收集数据的列表框,这就是我的解决方案的实现方式

from tkinter import*
import sqlite3

connection = sqlite3.connect("TCCAnimalComplaints.db")
connection.row_factory = sqlite3.Row
cursor = connection.cursor()

listData = cursor.execute("SELECT * FROM animalcomplaints")
customers = cursor.fetchall()

for name in customers:
    #print('{0}'.format(name[0]))
    customer = '{0}'.format(name[0])
    itemsforlistbox = [customer]

customerSelect=Tk()
sizex = 600
sizey = 400
posx  = 40
posy  = 20
customerSelect.wm_geometry("%dx%d+%d+%d" % (sizex, sizey, posx, posy))
#itemsforlistbox=['one','two','three','four','five','six','seven']

def CurSelect(evt):
    value=str((mylistbox.get(mylistbox.curselection())))
    print (value)

mylistbox=Listbox(customerSelect,width=60,height=10,font=('times',13))
mylistbox.bind('<<ListboxSelect>>',CurSelect)
mylistbox.place(x=32,y=90)

for items in itemsforlistbox:
    mylistbox.insert(END,items)
mainloop()

我希望列表框列出数据库中的每一行,而不是只列出第一行

python linting 中没有错误。预期结果:未列出不同列中的其余行数据条目。这是我正在尝试实施的东西。

公元前 1966 年

在此示例中,您可以看到列表框小部件的所有功能。self.rs 是一个记录集,元组的元组,其中每条记录都有三个字段。

  1. 第一个是pk,
  2. 第二个字段是水果的名称
  3. 第三个可以是 0 或 1。

我们加载列表框中的每条记录,但即使在与列表框耦合的字典中,列表框索引 = 记录的 pk 也是如此。

我们这样做是为了在单击列表框行时检索所有记录数据。

启动脚本后单击加载按钮,然后尝试单击或双击列表框的某些行并查看发生了什么。

 #!/usr/bin/python3
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox


class Main(ttk.Frame):
    def __init__(self, parent):
        super().__init__()

        self.parent = parent
        self.init_ui()

    def init_ui(self):

        self.pack(fill=tk.BOTH, expand=1)

        f = ttk.Frame()

        ttk.Label(f, text = "Listbox").pack()
        sb = tk.Scrollbar(f,orient=tk.VERTICAL)

        self.lstItems = tk.Listbox(f,
                       relief=tk.GROOVE,
                       selectmode=tk.BROWSE,
                       exportselection=0,
                       height=20,
                       width=50,
                       background = 'white',
                       font='TkFixedFont',
                       yscrollcommand=sb.set,)

        self.lstItems.bind("<<ListboxSelect>>", self.on_item_selected)
        self.lstItems.bind("<Double-Button-1>", self.on_item_activated)

        sb.config(command=self.lstItems.yview)

        self.lstItems.pack(side=tk.LEFT,fill=tk.BOTH, expand =1) 
        sb.pack(fill=tk.Y, expand=1)

        w = ttk.Frame()

        ttk.Button(w, text="Load", command=self.on_load).pack()
        ttk.Button(w, text="Close", command=self.on_close).pack()

        f.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)
        w.pack(side=tk.RIGHT, fill=tk.BOTH, expand=1)

    def on_load(self,):

        self.rs = ((1, 'Apple', 1), (2, 'Pear', 1), (3, 'Banana', 1),
              (4, 'Orange',1), (5, 'Grapes', 0), (6, 'Watermelon', 1),
              (7, 'Plum',1), (8, 'Strawberries', 0),)


        index = 0
        self.dict_items={}

        if self.rs:
            self.lstItems.delete(0, tk.END)

            for i in self.rs:
                self.lstItems.insert(tk.END, i[1])

                if i[2] != 1:
                    self.lstItems.itemconfig(index, {'bg':'light gray'})

                self.dict_items[index] = i[0]
                index += 1

    def on_item_activated(self, evt=None):

        if self.lstItems.curselection():
            index = self.lstItems.curselection()[0]
            print("Double-Button-1 self.lstItems.curselection()[0]: {0}".format(index))


        else:
            messagebox.showwarning(self.parent.title(), "No item selected", parent=self)

    def on_item_selected(self, evt):

        if self.lstItems.curselection():
            index = self.lstItems.curselection()[0]
            pk = self.dict_items.get(index)
            print("ListboxSelect self.dict_items.get(index) = {0}".format(pk))
            print("ListboxSelect self.rs[index]: {0}".format(self.rs[index]))


    def on_close(self):
        self.parent.on_exit()

class App(tk.Tk):
    """Start here"""

    def __init__(self):
        super().__init__()

        self.protocol("WM_DELETE_WINDOW", self.on_exit)

        self.set_title()
        self.set_style()

        frame = Main(self,)
        frame.pack(fill=tk.BOTH, expand=1)

    def set_style(self):
        self.style = ttk.Style()
        #('winnative', 'clam', 'alt', 'default', 'classic', 'vista', 'xpnative')
        self.style.theme_use("clam")


    def set_title(self):
        s = "{0}".format('Simple App')
        self.title(s)

    def on_exit(self):
        """Close all"""
        if messagebox.askokcancel("Simple App", "Do you want to quit?", parent=self):
            self.destroy()               

if __name__ == '__main__':
    app = App()
    app.mainloop()

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从列表框获取项目并将其放入列中

来自分类Dev

如何将列表框值保存到MVC4和EF中的数据库中?

来自分类Dev

如何将列表框值保存到MVC4和EF中的数据库中?

来自分类Dev

使用访问数据库将具有多个值的项目从列表框显示到文本框中

来自分类Dev

如何将数据库中的表名放入组合框?

来自分类Dev

如何将数据从一种形式放入另一种形式的列表框中

来自分类Dev

如何将文档中的文本放入数据库?

来自分类Dev

将选定的项目从数据库填充到MultiSelect列表框

来自分类Dev

将多个列表框项目加载到数据库

来自分类Dev

根据数据库值在列表框中预先选择多个项目

来自分类Dev

从列表框和数据库中删除选定的项目

来自分类Dev

将列表框绑定到数据库表

来自分类Dev

将数据库显示到列表框

来自分类Dev

从数据库中删除列表框中的选择

来自分类Dev

如何将组合框值与列表框中的项目进行比较-vb.net

来自分类Dev

如何将选中的项目移动到列表框

来自分类Dev

如何将命令绑定到列表框项目?

来自分类Dev

如何将项目添加到列表框?

来自分类Dev

如何将数据从列表插入到列表框?

来自分类Dev

如何将坐标从熊猫数据框推入列表?

来自分类Dev

将列表框中的值添加到数据库

来自分类Dev

尝试将信息从数据库表显示到列表框中

来自分类Dev

如何将txt中的所有项目添加到列表框中?

来自分类Dev

将列表框项目放入多个文本框

来自分类Dev

如何将列表框项目保存到字符串中

来自分类Dev

如何将列表框中的选定项目绑定到查询(MS Access)?

来自分类Dev

如何将代码模块(.cs)显示为列表框中的项目?

来自分类Dev

如何将列表框添加到循环中的列表框列表中?

来自分类Dev

如何将某些内容放入数据库?

Related 相关文章

  1. 1

    从列表框获取项目并将其放入列中

  2. 2

    如何将列表框值保存到MVC4和EF中的数据库中?

  3. 3

    如何将列表框值保存到MVC4和EF中的数据库中?

  4. 4

    使用访问数据库将具有多个值的项目从列表框显示到文本框中

  5. 5

    如何将数据库中的表名放入组合框?

  6. 6

    如何将数据从一种形式放入另一种形式的列表框中

  7. 7

    如何将文档中的文本放入数据库?

  8. 8

    将选定的项目从数据库填充到MultiSelect列表框

  9. 9

    将多个列表框项目加载到数据库

  10. 10

    根据数据库值在列表框中预先选择多个项目

  11. 11

    从列表框和数据库中删除选定的项目

  12. 12

    将列表框绑定到数据库表

  13. 13

    将数据库显示到列表框

  14. 14

    从数据库中删除列表框中的选择

  15. 15

    如何将组合框值与列表框中的项目进行比较-vb.net

  16. 16

    如何将选中的项目移动到列表框

  17. 17

    如何将命令绑定到列表框项目?

  18. 18

    如何将项目添加到列表框?

  19. 19

    如何将数据从列表插入到列表框?

  20. 20

    如何将坐标从熊猫数据框推入列表?

  21. 21

    将列表框中的值添加到数据库

  22. 22

    尝试将信息从数据库表显示到列表框中

  23. 23

    如何将txt中的所有项目添加到列表框中?

  24. 24

    将列表框项目放入多个文本框

  25. 25

    如何将列表框项目保存到字符串中

  26. 26

    如何将列表框中的选定项目绑定到查询(MS Access)?

  27. 27

    如何将代码模块(.cs)显示为列表框中的项目?

  28. 28

    如何将列表框添加到循环中的列表框列表中?

  29. 29

    如何将某些内容放入数据库?

热门标签

归档