我想要在我的 Tkinter GUI 中有一个表格 - 但似乎 Tkinter 没有表格元素。
所以我会选择两个列表框,但为了使它们看起来像表格,我需要去掉它们的边框。
您希望将边框宽度设置为零,但您还希望将突出显示厚度设置为零。 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()
我认为你能实现的最好的结果就是:
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),并为整个小部件提供与原始列表框类似的外观,我将其包装在框架中,并赋予与默认列表框相同的边框样式。
同样值得一提的是,您需要正确设置绑定以使它们按预期滚动,仅绑定到滚轮和滚动条是不够的,因为当突出显示项目时可以使用箭头键移动列表,就像第二个一样本页示例:
一起滚动多个列表框
通过桑蒂克劳斯
borderwidth
指定为 0。
例如:
from Tkinter import * # from tkinter import * (Python 3.x)
root = Tk()
lb = Listbox(borderwidth=0) # <---
lb.pack()
root.mainloop()
如果您想要 tkinter 中的表格,我建议使用树视图并将其设置为“标题”,这相当于表格。 https://www.pythontutorial.net/tkinter/tkinter-treeview/