gpt4 book ai didi

Python:开始使用 tk,小部件不在网格上调整大小?

转载 作者:行者123 更新时间:2023-11-28 16:36:07 25 4
gpt4 key购买 nike

我刚刚开始使用 Python 的 Tkinter/ttk,当我使用网格布局时,我在调整小部件大小方面遇到了问题。这是我的代码的一个子集,它表现出与完整代码相同的问题(我意识到这个子集非常简单,我可能最好使用 pack 而不是 grid,但我认为这将有助于切入主要问题,一旦我理解了,我就可以在我的完整程序中出现的任何地方修复它):

import Tkinter as tk
import ttk

class App(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)

# Create my widgets
self.tree = ttk.Treeview(self)
ysb = ttk.Scrollbar(self, orient='vertical', command=self.tree.yview)
xsb = ttk.Scrollbar(self, orient='horizontal', command=self.tree.xview)
self.tree.configure(yscroll=ysb.set, xscroll=xsb.set)
self.tree.heading('#0', text='Path', anchor='w')

# Populate the treeview (just a single root node for this simple example)
root_node = self.tree.insert('', 'end', text='Test', open=True)

# Lay it out on a grid so that it'll fill the width of the containing window.
self.tree.grid(row=0, column=0, sticky='nsew')
self.tree.columnconfigure(0, weight=1)
ysb.grid(row=0, column=1, sticky='nse')
xsb.grid(row=1, column=0, sticky='sew')
self.grid()
master.columnconfigure(0, weight=1)
self.columnconfigure(0, weight=1)

app = App(tk.Tk())
app.mainloop()

我想让我的 TreeView 填满它所在窗口的整个宽度,但 TreeView 只是在窗口中间居中。

最佳答案

尝试在执行 self.grid 时指定 sticky 参数。没有它,框架将不会在窗口调整大小时调整大小。您还需要 rowconfigure master 和 self,就像您对它们进行 columnconfigure 一样。

    #rest of code goes here...
xsb.grid(row=1, column=0, sticky='sew')
self.grid(sticky="nesw")
master.columnconfigure(0, weight=1)
master.rowconfigure(0,weight=1)
self.columnconfigure(0, weight=1)
self.rowconfigure(0, weight=1)

或者,不是将框架网格化,而是打包它并指定它填充它占据的空间。由于 Frame 是 Tk 中唯一的小部件,因此您是 pack 还是 grid 并不重要。

    #rest of code goes here...
xsb.grid(row=1, column=0, sticky='sew')
self.pack(fill=tk.BOTH, expand=1)
self.columnconfigure(0, weight=1)
self.rowconfigure(0, weight=1)

关于Python:开始使用 tk,小部件不在网格上调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25940217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com