gpt4 book ai didi

python - 如何在粘性框架中居中 tkinter 小部件

转载 作者:太空狗 更新时间:2023-10-29 21:05:42 25 4
gpt4 key购买 nike

我正在使用 tkinter 在 python3 中编写游戏,但我在让网格执行我希望它执行的操作时遇到了一些麻烦。我已经浏览了至少五页的谷歌搜索结果,包括我能想到的关于如何提出这个问题的每种变体的堆栈溢出答案。我终于屈服并创建了这个帐户来询问这个问题。

我得到的是:一个按钮 (newGameButton) 和一个标签 (messageBox) 位于框架 (topBar) 的中心本身居中但不水平跨越整个窗口 (contentFrame)。

我设法获得的最好结果(通过在 topBar 上放置 sticky=W+E):框架现在跨越整个窗口,按钮和标签保持相同大小(标签上的粘性没有' 做一件事,粘在按钮上只使它和标签一样宽),现在粘在 topBar 的左侧。

我想要它做什么:让框架跨越整个窗口,标签也跨越整个窗口,按钮居中。

topBar 为 columnspan=23 的原因是内容框架中的其余内容为 23 列宽(包括 0 列)。我将按钮和标签放在框架中的原因是我希望围绕它们的整个框具有边框效果。

代码:

self.contentFrame = Frame(self.root)
self.contentFrame.grid(row=0, column=0)
self.topBar = Frame(self.contentFrame, border=2, relief=RAISED)
self.topBar.grid(row=0, column=0, columnspan=23)
self.newGameButton = Button(self.topBar, text="New Game")
self.newGameButton.grid(row=0, column=0)
self.messageBox = Label(self.topBar, textvariable=self.message, height=2)
self.messageBox.grid(row=1, column=0, sticky=W+E)

有人有什么想法吗?在这一点上,我非常绝望。

最佳答案

问题是您的所有列都没有任何权重。权重属性决定哪些列(和行)获得额外空间。由于您的列都没有非零权重,因此不会为它们分配任何额外空间,因此它们会尽可能小。

根据经验,您应该始终为框架中的至少一行和一列赋予非零权重。在您的情况下,为所有帧赋予第 0 行和第 0 列权重 1 似乎可行:

self.root.grid_columnconfigure(0, weight=1)
self.root.grid_rowconfigure(0, weight=1)
self.contentFrame.grid_columnconfigure(0, weight=1)
self.contentFrame.grid_rowconfigure(0, weight=1)
self.topBar.grid_columnconfigure(0, weight=1)
self.topBar.grid_rowconfigure(0, weight=1)

关于python - 如何在粘性框架中居中 tkinter 小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26902034/

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