python - 如何在表格中添加滑动条?
问题描述
我一直在创建一个应用程序,其中有可以添加到表中的客户端,问题是,我需要一个滚动条来滚动浏览所有客户端,因为应用程序高度是有限的,而客户端不是。使用 tkinter 我找到了一种使用条目和网格创建“表”的方法,但是如果我想创建 100 行怎么办?它们会在视图之外,所以这就是需要滚动条的原因。
对于那些了解 Java 的人,我想创建类似于 Jtable 的东西,它具有创建行、删除行的方法,并且一旦 JTable 用完空间,它就会自动生成滚动条。
我尝试使用 ttk 中的 TkTable 并弄乱了一些属性,但我更喜欢 Entries 的外观。
root = Tk()
root.geometry("1200x900")
for i in range(10):
e = Entry(relief=RIDGE)
e.grid(row=i, column=2, sticky=N)
root.mainloop()
我创建了一个 root = Tk() 并使用 root 将它们网格化。您将在另一个之上看到 10 个条目。
解决方案
当一个窗口包含许多小部件时,它们可能并非全部可见。但是,窗口(Tk 或 Toplevel 实例)和 Entry 都不是可滚动的。
使窗口内容可滚动的一种解决方案是将所有小部件放在一个 Frame 中,然后使用 create_window 方法将此 Frame 嵌入到 Canvas 中。
from tkinter import *
root = Tk()
canvas = Canvas(root)
scroll_y = Scrollbar(root, orient="vertical", command=canvas.yview)
frame = Frame(canvas)
# group of widgets
for i in range(100):
e = Entry(frame, relief=RIDGE, width = 100)
e.grid(row=i, column=2, sticky=N)
# put the frame in the canvas
canvas.create_window(0, 0, anchor='nw', window=frame)
# make sure everything is displayed before configuring the scrollregion
canvas.update_idletasks()
canvas.configure(scrollregion=canvas.bbox('all'),
yscrollcommand=scroll_y.set)
canvas.pack(fill='both', expand=True, side='left')
scroll_y.pack(fill='y', side='right')
root.mainloop()
输出:
推荐阅读
- python - 添加边会创建重复节点,而不是使用已添加的节点
- mysql - MYSQL UPDATE 查询多个值
- java - RecyclerView LinearLayout 总是出现在其他元素之上
- node.js - 来自 socket.io 的 ERR_CONNECTION_REFUSED
- c# - 报表查看器始终打印纵向
- amazon-web-services - AWS API Gateway SDK 生成错误至少一项操作
- c# - 如何从外部列表中获取内部成员列表?
- neural-network - 具有未展平输入的全连接层
- c++ - 文件循环使用时只保存一次数据
- java - 为什么我在使用 dataSnapshot 时无法从 Firebase 获取一些数据