繁体   English   中英

tkinter 滚动条内的框架很小 - 不使用可用空间

[英]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)

您的代码还有第三个问题,尽管它相当无害。 您在frame1frame2上调用pack ,但稍后将frame1frame2添加到笔记本中。 对这些小部件调用pack毫无意义,因为您将它们添加到笔记本中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM