Python:Python语言

rseugnpd  于 2023-04-28  发布在  Python
关注(0)|答案(4)|浏览(211)

我想得到一个表,但当我意识到,在Python中没有表,我决定用两个列表框来修复它。
关键是,我不想他们之间有边界。
所以我的问题是:* 如何在Python中删除Tk列表框的边框?*
即使它会变白色我有一个解决办法。..

c9qzyr3d

c9qzyr3d1#

您希望将borderwidth设置为零,但也希望将highlightthickness设置为零。HighlightThickness表示一个矩形,当小部件具有键盘焦点时,它包围整个小部件。最后,当你使用pack或grid时,确保不要在它们之间添加任何填充。
如果你想完成两个小部件合二为一的错觉,把它们放在一个框架中,并给予框架一个边框宽度和浮雕。将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()
x6492ojm

x6492ojm2#

我认为你能做到的最好就是:

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),并给予整个小部件一个类似的外观,以原来的列表框我已经 Package 在一个框架,并给予相同的边框样式作为默认的列表框。
同样值得的是,你需要得到正确的绑定,使它们按预期滚动,仅仅绑定到滚动轮和滚动条是不够的,因为列表可以通过箭头键在突出显示一个项目时移动,就像在本页的第二个例子中:
scrolling multiple listboxes together由Santiclause

jchrr9hc

jchrr9hc3#

在创建列表框时,指定borderwidth为0。
例如:

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

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

5anewei64#

如果你想在tkinter中创建一个表,我建议你使用树视图,并将其设置为“标题”,这相当于一个表。https://www.pythontutorial.net/tkinter/tkinter-treeview/

相关问题