python - tkinter 元素不使用窗口调整大小,使用包
问题描述
我有下面的当前代码,用于将一些基本参数输入到 AI 分配中。它只是用来设置起始参数并显示实现的不同算法的输出,但是包含输出的框不会调整大小?我想我可能在父子结构上做错了,但我不知道是什么。
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.mainframe= tk.Frame(master=self, width=768, height=576)
self.mainframe.pack(fill=tk.BOTH, expand=1)
self.xsizelabel = tk.Label(self.mainframe, text="Size (X)")
self.xsizelabel.pack(side="top")
self.xsize = tk.Entry(self.mainframe)
self.xsize.insert(0, 2)
self.xsize.pack(side="top")
self.ysizelabel = tk.Label(self.mainframe, text="Size (Y)")
self.ysizelabel.pack(side="top")
self.ysize = tk.Entry(self.mainframe)
self.ysize.insert(0, 1)
self.ysize.pack(side="top")
self.xstartlabel = tk.Label(self.mainframe, text="Starting Position (X)")
self.xstartlabel.pack(side="top")
self.xStart = tk.Entry(self.mainframe)
self.xStart.insert(0, 0)
self.xStart.pack(side="top")
self.ystartlabel = tk.Label(self.mainframe, text="Starting Position (Y)")
self.ystartlabel.pack(side="top")
self.yStart = tk.Entry(self.mainframe)
self.yStart.insert(0, 0)
self.yStart.pack(side="top")
self.outputstartlabel = tk.Label(self.mainframe, text="Output")
self.outputstartlabel.pack(side="top")
self.separator = tk.Frame(master=self.mainframe, width=768, height=576, bd=1)
self.separator.pack(fill=tk.BOTH, padx=5, pady=5)
self.output = tk.Scrollbar(self.separator)
self.output.pack(side=tk.RIGHT, fill=tk.Y)
self.listbox = tk.Listbox(self.separator, yscrollcommand=self.output.set)
self.listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=1)
self.run_button = tk.Button(self.mainframe)
self.run_button["text"] = "Run with these settings"
self.run_button["command"] = self.runAlgorithm
self.run_button.pack(side="top")
self.quit = tk.Button(self.mainframe, text="QUIT", fg="red",
command=self.master.destroy)
self.quit.pack(side="bottom")
但生成的窗口如下所示: 默认
当我展开窗口时,什么都没有展开,尽管设置了自动填充和展开选项。我究竟做错了什么?
解决方案
我无法运行你的程序,因为你没有展示整个事情。我看到您已经在 self.mainframe 上设置了填充和扩展选项,但是您没有在构造函数中设置这些选项。因此,包含 self.mainframe 的基本窗口不会扩展以填充其可用空间。您需要使所有父窗口都可展开,因为当您拖动主窗口的边缘时,您正在对顶层框架进行操作。
推荐阅读
- java - 返回使用反射实现接口的类
- python - 关于tensorlfow keras学习率的查询?
- julia - 隐藏/删除实时文档按钮
- google-chrome-extension - documentUrlPatterns 不尊重路径名
- python-3.x - 类型错误:* 之后的 asyncio.runners.run() 参数必须是可迭代的,而不是协程
- python - 用 NaN 替换部分 Python 数组
- c++ - 在 c++ 中编写两个多项式的加法时,我可以在没有项和项的顺序相同时计算加法。它在差异时显示错误,为什么?
- php - 基本 PHP 上传表单问题
- r - 将 p 值添加到 ggplot;ggsignif 表示它只能处理在 x 轴上绘制的组的数据
- r - 循环两个数据帧