Python:没有边框的列表框

时间:2014-10-03 12:05:01

标签: python listbox tkinter border

我想得到一张桌子,但是当我意识到,python中没有表格时,我决定用两个列表框修复它。

关键是,我不想要它们之间的边界。

所以我的问题是:如何从Python中的Tk列表框中删除边框?

即使它变成了白色,我也有了解决方案......

3 个答案:

答案 0 :(得分:4)

您希望将borderwidth设置为零,但您还要将highlightthickness设置为零。 Highlightthickness表示一个矩形,当它具有键盘焦点时围绕整个小部件。最后,当您使用包或网格时,请确保不要在它们之间添加任何填充。

如果你想完成这两个小部件是一个的错觉,把它们放在一个框架中,给框架一个边框宽度和浮雕。 将Tkinter导入为tk

class Example(tk.Frame):
    def __init__(self, parent):
        tk.Frame.__init__(self, parent, borderwidth=1, relief="sunken")

        lb1 = tk.Listbox(self, borderwidth=0, highlightthickness=0)
        lb2 = tk.Listbox(self, borderwidth=0, highlightthickness=0)

        lb1.pack(side="left", fill="both", expand=True)
        lb2.pack(side="left", fill="both", expand=True)

        lb1.insert(0, "left")
        lb2.insert(0, "right")

if __name__ == "__main__":
    root = tk.Tk()
    Example(root).pack(fill="both", expand=True, padx=8, pady=8)
    root.mainloop()

答案 1 :(得分:2)

我认为你能达到的最好成绩是:

import tkinter as tk

root = tk.Tk()

wrapper = tk.Frame(root, bd=2, relief="sunken")
L1 = tk.Listbox(wrapper, bd=0)
L2 = tk.Listbox(wrapper, bd=0)

L1.grid(column = 1, row = 1)
L2.grid(column = 2, row = 1)

wrapper.pack()

root.mainloop()

注意将每个列表框的边框设置为0,(bd = 0),并为整个窗口小部件提供与原始列表框相似的外观,我将其包装在一个框架中,并给出与默认列表框相同的边框样式

你也不需要让绑定正确使它们按预期滚动,只是绑定到滚轮和滚动条是不够的,因为当项目突出显示时,可以使用箭头键移动列表,如本页的第二个例子:
scrolling multiple listboxes together 作者:Santiclause

答案 2 :(得分:1)

创建列表框时,

Speicfy borderwidth为0。

例如:

from Tkinter import *  # from tkinter import *   (Python 3.x)

root = Tk()
lb = Listbox(borderwidth=0)  # <---
lb.pack()
root.mainloop()