[英]Frame inside a tkinter scrollbar is tiny — not using available space
如何修复视图? 它紧凑而小巧。 这是因为滚动条,但不知道如何修复它。
没有滚动条,没关系。 但是如果我添加它,我得到的...
不知道怎么修。。
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
root.geometry('400x300')
root.title('Notebook Demo')
notebook = ttk.Notebook(root)
notebook.pack(pady=10, expand=True)
frame1 = ttk.Frame(notebook, width=400, height=280)
frame2 = ttk.Frame(notebook, width=400, height=280)
frame1.pack(fill='both', expand=True)
frame2.pack(fill='both', expand=True)
text = tk.Text(frame1)
text.insert("end", "sss")
text.pack()
verscrlbar_frame1 = ttk.Scrollbar(text, orient="vertical")
horscrlbar_frame1 = ttk.Scrollbar(text, orient="horizontal")
text.config(xscrollcommand=horscrlbar_frame1.set, yscrollcommand=verscrlbar_frame1.set)
verscrlbar_frame1.config(command=text.yview)
horscrlbar_frame1.config(command=text.xview)
verscrlbar_frame1.pack(side='right', fill='y')
horscrlbar_frame1.pack(side='bottom', fill='x')
notebook.add(frame1, text='General Information')
notebook.add(frame2, text='Profile')
root.mainloop()
您的代码有两个问题。
首先,您将文本小部件添加到框架中,但不告诉它扩展或缩小以填充框架。 因此,无论其自然大小如何。 您应该配置pack
以让文本小部件填充它已分配的区域:
text.pack(fill="both", expand=True)
其次,您要在文本小部件内添加滚动条。 当您调用pack
将滚动条添加到文本小部件时,文本小部件将缩小以适应滚动条的自然大小。 由于您没有强制小部件扩展以填充其框架,因此它将缩小到您看到的大小。
作为一个一般的经验规则,你不应该把滚动条文本构件内。 这种行为是您不应该这样做的一个原因,但另一个原因是滚动条会在小部件的边缘覆盖文本。
您应该将滚动条设为框架的子项,而不是文本小部件。 如果您希望它们看起来好像在文本小部件内,请为框架提供与文本小部件相同的背景颜色并删除文本小部件边框。
verscrlbar_frame1 = ttk.Scrollbar(frame1, orient="vertical")
horscrlbar_frame1 = ttk.Scrollbar(frame1, orient="horizontal")
您可能还应该调整打包它们的顺序,尽管grid
是一个更好的选择,因为滚动条不会相互重叠。
verscrlbar_frame1.pack(side='right', fill='y')
horscrlbar_frame1.pack(side='bottom', fill='x')
text.pack(fill="both", expand=True)
您的代码还有第三个问题,尽管它相当无害。 您在frame1
和frame2
上调用pack
,但稍后将frame1
和frame2
添加到笔记本中。 对这些小部件调用pack
毫无意义,因为您将它们添加到笔记本中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.