将填充查询插入添加到列表框

DT2*_*000 4 tkinter python-3.x

我已经阅读了许多线程和其他资源,试图找到处理此问题的正确方法,但我还没有找到任何适用于我的应用程序的内容。这就是我想要实现的目标。

当查询完成并将数据插入列表框完成后,我似乎无法将数据插入留出 1 个字符空间。

我正在使用 pack() 并且我已经阅读了 tkinter 手册,并尝试了每个可用的示例以及在此处的各个线程上找到的其他示例。

小部件:

output = tkinter.Listbox(window_2, height = 20, font='Times 10',
width=42, bd=1, bg = '#FFD599', fg = '#9A0615', selectmode=SINGLE)

output.pack()
output.place(x=210, y=195)
Run Code Online (Sandbox Code Playgroud)

我尝试使用 pack() 尝试 padx 和 pady,但没有成功,尽管这与 Text 小部件一起成功运行。我还尝试使用我在网站上找到的一些替代方案,但在插入数据时都没有成功地为列表框添加边距。

有什么建议吗?

Bry*_*ley 5

packpadx/pady选项ipadx/ipady不会影响列表框中的数据。列表框本身没有任何添加内部边距的选项。

为了获得列表框内部的边距,我通常做的是给它一个零borderwidthhighlightthickness,然后将它放在具有相同背景颜色的框架中,并让框架作为边框。然后,您可以在边框和列表框之间添加所需的任何填充。

这也很方便,因为您可以将滚动条放在框架内,使其看起来像是在列表框内,而实际上并不在列表框内。

例子:

import tkinter as tk

root = tk.Tk()
root.configure(background="gray")
listbox_border = tk.Frame(root, bd=1, relief="sunken", background="white")
listbox_border.pack(padx=10, pady=10, fill=None, expand=False)

listbox = tk.Listbox(listbox_border, width=20, height=10,
                     borderwidth=0, highlightthickness=0,
                     background=listbox_border.cget("background"),
)
vsb = tk.Scrollbar(listbox_border, orient="vertical", command=listbox.yview)
listbox.configure(yscrollcommand=vsb)
vsb.pack(side="right", fill="y")
listbox.pack(padx=10, pady=10, fill="both", expand=True)

for i in range(100):
    listbox.insert("end", "Item #{}".format(i))

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述