python - 无法阻止标签扩展主窗口
问题描述
例子
(在我的真实代码中模仿布局的相关部分)
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)
解决方案
推荐阅读
- r - 用于将每个非空单元格的 data.table 转换为长格式的矢量化解决方案,以列+行索引作为参考
- html - 用 CSS 中的一句话剪辑视频
- java - “未使用@Test 注释或未包含”,我已尽力找到解决此问题的方法,但没有结果
- excel - VBA - 如果不满足其他子中的条件,如何退出主子
- javascript - 无法在从 React/redux 中的另一个 js 文件导入的 App.js 中加载函数
- textbox - 如何在 dm-script 中动态使用对话框文本框
- windows - 如何使用 CanvasControl 绘图会话在 Win2D 中旋转文本?
- javascript - 使用 material-ui 更改父级中的子组件样式
- node.js - 第一个 node.js 项目无法连接到 mongodb
- javascript - 在警告中打开 jQuery 手风琴面板