python - 无法阻止标签扩展主窗口

标签 python tkinter

示例

(模仿我真实代码中布局的相关部分)

import Tkinter as tk
import ttk

# set up root
root = tk.Tk()
root.minsize(300, 50)
frame = ttk.Frame(root)
frame.grid(row=0, column=0, sticky=tk.EW)

# set up buttons that insert a short or a long string
textvar = tk.StringVar(value='foo')

def insert_short():
    textvar.set('foo')

def insert_long():
    textvar.set('foo'*30)

button_short = ttk.Button(frame, text='short', command=insert_short)
button_short.grid(row=0, column=0)
button_long = ttk.Button(frame, text='long', command=insert_long)
button_short.grid(row=0, column=0)
button_long.grid(row=0, column=1)

# set up label

# border for label to see its size
style = ttk.Style()
style.configure(
    'Bordered.TLabel', foreground='black', borderwidth=1, relief='solid')

# make label extend to the right
frame.columnconfigure(2, weight=1)

# place label
label = ttk.Label(frame, textvariable=textvar, style='Bordered.TLabel')
label.grid(row=0, column=2, sticky=tk.EW)

# place some other widget under label to mimic my real code
ttk.Button(frame, text='some other widget').grid(row=1, column=2)

# TRIED, NOT WORKING:
#root.resizable(False, False)
#frame.propagate(False)
#frame.grid_propagate(False)
#label.propagate(False)
#label.grid_propagate(False)

root.mainloop()

输出

问题

如何防止 label 扩展主窗口?

(额外的问题,但并不重要:如果标签太长,有没有办法使标签可滚动?)

尝试

我尝试了以下命令:

root.resizable(False, False)
frame.propagate(False)
frame.grid_propagate(False)
label.propagate(False)
label.grid_propagate(False)

最佳答案

您可以在只读状态下使用 Entry 创建可滚动标签,并通过使用滚动来防止小部件扩展主窗口。

尝试用以下代码替换标签定义:

child_frm = ttk.Frame(frame)
label = ttk.Entry(child_frm, textvariable=textvar, style='Bordered.TLabel', state='readonly')
scroll = ttk.Scrollbar(child_frm, orient='horizontal', command=label.xview)
label.config(xscrollcommand=scroll.set)
label.grid(row=0, sticky=tk.EW)
scroll.grid(row=1, sticky=tk.EW)
child_frm.grid(row=0, column=2)

关于python - 无法阻止标签扩展主窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58542061/

相关文章:

python - 删除数组中重复的列,保持顺序

python - 3向量级数LSTM不能突破0.5精度

python - 有没有读取ms office文件底层xml的python包?

python - tkinter 中的非顶级 opengl 小部件

python - 停止 Tkinter 窗口而不关闭它

python - 我在制作打印 pi 的按钮时遇到问题

python - 用于控制 Python 调试消息日志记录的首选方法?

Python,当我输入变量的实际值时,MySQL 语句有效,但在使用变量时却无效?

python - Tkinter 在循环处理时卡住,我该如何防止它?

python - Pyinstaller:禁用控制台时执行失败