我是python的新手,最近我使用带tkinter的Python和Sqlite3制作字典。 当我运行代码时,它在IDLE中返回多行,但在GUI中它仅显示最后一个结果。 我想在GUI中显示所有信息。 感谢您的帮助和建议。

import tkinter
import sqlite3
class Dictionary:
def __init__(self,master =None):
    self.main_window = tkinter.Tk()
    self.main_window.title("Lai Mirang Dictionary")
    self.main_window.minsize( 600,400)
    self.main_window.configure(background = 'paleturquoise')
    self.frame1 = tkinter.Frame()
    self.frame2= tkinter.Frame(bg = 'red')
    self.frame3 =tkinter.Text( foreground = 'green')
    self.frame4 = tkinter.Text()


    self.lai_label = tkinter.Label(self.frame1,anchor ='nw',font = 'Times:12', text = 'Lai',width =25,borderwidth ='3',fg='blue')
    self.mirang_label = tkinter.Label(self.frame1,anchor ='ne',font = 'Times:12', text = 'Mirang',borderwidth ='3',fg ='blue')

    self.lai_label.pack(side='left')
    self.mirang_label.pack(side = 'left')

    self.kawl_buttom= tkinter.Button(self.frame2 ,fg = 'red',font = 'Times:12',text ='Kawl',command=self.dic,borderwidth ='3',)

    self.lai_entry = tkinter.Entry(self.frame2, width= 28, borderwidth ='3',)
    self.lai_entry.focus_force()
    self.lai_entry.bind('<Return>', self.dic,)
    self.lai_entry.configure(background = 'khaki')


    self.lai_entry.pack(side='left')
    self.kawl_buttom.pack(side = 'left')

    self.value = tkinter.StringVar()
    self.mirang_label= tkinter.Label(self.frame3,font = 'Times:12',fg = 'blue',textvariable = self.value,justify = 'left',wraplength ='260',width = 30, height = 15,anchor = 'nw')
    self.mirang_label.pack()
    self.mirang_label.configure(background = 'seashell')


    self.copyright_label = tkinter.Label(self.frame4,anchor ='nw',font = 'Times:12:bold',text = "copyright @ cchristoe@gmail.com",width = 30,borderwidth = 3, fg = 'purple',)
    self.copyright_label.pack()

    self.frame1.pack()
    self.frame2.pack()
    self.frame3.pack()
    self.frame4.pack()


    tkinter.mainloop()
    self.main_window.quit()

def dic(self, event = None):
    conn = sqlite3.connect('C:/users/christoe/documents/sqlite/laimirangdictionary.sqlite')
    c = conn.cursor()
    kawl = self.lai_entry.get()
    kawl = kawl + '%'
    c.execute("SELECT * FROM laimirang WHERE lai LIKE ?", (kawl,))
    c.fetchall      
    for member in c:
        out = (member)
        self.value.set(out)
        print(out, )


dic=Dictionary()

===============>>#1 票数:0

您需要更改:

 c.execute("SELECT * FROM laimirang WHERE lai LIKE ?", (kawl,))
 c.fetchall      
 for member in c:
     out = (member)
     self.value.set(out)
     print(out, )

至:

for member in c.execute("SELECT * FROM laimirang WHERE lai LIKE ?", (kawl,)):
    current_text = self.value.get()
    new_text = current_text +( "\n" if current_text else "") +" ".join(member)
    self.value.set(new_text)

新版本获取StringVar值的当前值,然后为返回的每一行添加返回的结果,并在每行之间添加一个空格。 但是,您所做的只是将StringVar更新为当前成员对象,因此它只有最后一个值。

这是多行显示的样子:

这是目前的样子

  ask by user1599545 translate from so

未解决问题?本站智能推荐:

1回复

Python3,Tkinter,SQLite3-登录编码错误

尝试验证凭据时出现问题(我将在下面发布代码)。 我想知道是否正在发生,因为我在数据库中将用户名和密码存储为字符串,是否应该将其存储为整数? 问题:我认为简单地举例说明问题是更容易的,也许更容易理解。 正确的信息(用户名=密码,密码=测试) 示例1:您输入“ something
1回复

显示整个数据库数据tkinter sqlite3

我试图在窗口上打印数据库中的历史记录,但是我的程序仅显示两行(甚至没有排序)。 有什么问题? 打印时,我可以正确获取数据,但无法在窗口上获取它们。 对我而言,这没有任何意义。
2回复

将sqlite3与Tkinter链接

作为我正在制作的库存系统的一部分,我希望Tkinter通过用户输入输入框并单击“添加库存”按钮来收集希望插入数据库的数据值。 我的问题是,我不确定如何将sqlite3与Tkinter代码结合使用。 以下是我的“添加库存”窗口的Tkinter代码 以下是我希望与Tkinter代
1回复

如何使用GUI Tkinter在Python中以特定格式显示来自数据库sqlite3的信息?

我试图从数据库中检索信息并以某种特定方式显示它: 名称:蝙蝠侠 价钱:£18 但是我收到此错误:“ TypeError:'int'对象不可下标。” 我该如何解决?
1回复

无法在python上显示sqlite3数据

我想在python Tkinter组合框上显示来自sqlite3的特定列,但是显示的是<sqlite3.Cursor object at 0x0000000003E73110> ,我不知道该怎么办? 我不久前才开始编码。 我写以下内容:
1回复

登录成功后,Python,Tkinter,SQlite3将用户重定向到新窗口

我是编程中的新手,我创建了以下源代码来验证用户是否成功登录。 我想在用户输入条目中的正确凭据后,将用户重定向到新窗口并摆脱当前窗口。 是否可以使用顶级方法?
1回复

如何使用tkinter Python创建搜索表单以从SQLITE3数据库进行搜索?

我想使用Tkinter创建一个搜索表单,用户可以在其中输入他们想要从SQLite3数据库中看到的名称。 名为New_Assignment的数据库包含有关人员的所有详细信息。 但是我对如何将Tkinter连接到数据库并使用名称进行搜索感到困惑? 到目前为止,这就是我所得到的。
1回复

python sqlite3 tkinter-如何为sqlite表中的每一行自动创建新的小部件?

我正在使用tkinter和sqlite3的项目。 在tk.Toplevel窗口中,我有一个框架。 在该框架内将是一个sqlite表中的列表行(取决于表中有多少行)。 对于框架中的每一行,都需要一个tk.Checkbutton,表中的一个值和两个tk.Entry。 这是一张(不好的
1回复

从Tkinter Frame更新sqlite3 dababase

我正在尝试使用此功能更新sqlite3数据库,但似乎无法正确传递参数。 通过在tkinter框架中手动进行的选择来拾取人。
1回复

将tkinter输出保存到sqlite3数据库

我对编程还很陌生,我正在尝试将tkinter输入框的输入保存到sqlite数据库中的字段中。 但是,无论如何,我总是将其保存为PY_VAR(number)的变体,或仅打印为{}。 这是代码的相关部分(SQL查询在数据库上下文中均有效)。 我将如何纠正此问题,以便将输入条目保存到SQL数据库