gpt4 book ai didi

python - Tkinter/Python - 调整窗口大小时禁用按钮大小调整

转载 作者:行者123 更新时间:2023-12-01 02:52:33 31 4
gpt4 key购买 nike

我有一个带有列表框的窗口,可以相互调整大小。我为此使用网格。列表框下方有一排按钮,当前正在随窗口移动和调整大小。我希望按钮在窗口和列表框调整大小时保持在原位并保持一致的大小(因此按钮始终保留在列表框的左下角)。

有没有简单的方法可以做到这一点?我今天刚刚开始使用 Tkinter,所以我可能在文档中错过了它,或者可能只是对网格布局感到困惑。

按钮设置如下:

nextbutton = Button(self, width = 30, height = 30, image = ffbtn)
nextbutton.image = ffbtn
nextbutton.bind("<Button-1>", self.forward)
nextbutton.grid(row = 10, column=4, sticky='w')

我已经尝试了所有粘性组合,但那些不调整按钮大小的组合仍然允许它们移动,这是我不想要的。

编辑:根据要求,这是我正在谈论的一个非常基本的示例。当调整窗口大小时,按钮会彼此分开。我不想这样。

顺便说一句,即使我使用其一列或一行,并且列/行跨度占据了所有空间,我是否需要在最后配置所有这些网格来设置权重?

import tkinter
from tkinter import *
from tkinter import ttk

class Application(tkinter.Tk):
def __init__(self, parent):
tkinter.Tk.__init__(self, parent)
self.minsize(300,300)
self.parent = parent
self.main()

def main(self):

self.grid()

listbox = tkinter.Listbox(self, width=20, height=25, bg = 'grey')
listbox.grid(padx=30, pady=30, columnspan=11, sticky='NEW')

bt1 = Button(self, width = 5, height = 5)
bt1.grid(row=10, column=0, padx=(30,0), sticky='w')

bt2 = Button(self, width = 5, height = 5)
bt2.grid(row = 10, column=1, sticky='w')

bt3 = Button(self, width = 5, height = 5)
bt3.grid(row = 10, column=2, sticky='w')

bt4 = Button(self, width = 5, height = 5)
bt4.grid(row = 10, column=3, sticky='w')

bt5 = Button(self, width = 5, height = 5)
bt5.grid(row = 10, column=4, sticky='w')

self.grid_columnconfigure(0,weight=1)
self.grid_columnconfigure(1,weight=1)
self.grid_columnconfigure(2,weight=1)
self.grid_columnconfigure(3,weight=1)
self.grid_columnconfigure(4,weight=1)
self.grid_columnconfigure(5,weight=1)
self.grid_columnconfigure(6,weight=1)
self.grid_columnconfigure(7,weight=1)
self.grid_columnconfigure(8,weight=1)
self.grid_columnconfigure(9,weight=1)
self.grid_columnconfigure(10,weight=1)
self.grid_rowconfigure(0,weight=1)
self.grid_rowconfigure(1,weight=1)
self.grid_rowconfigure(2,weight=1)
self.grid_rowconfigure(3,weight=1)
self.grid_rowconfigure(4,weight=1)
self.grid_rowconfigure(5,weight=1)
self.grid_rowconfigure(6,weight=1)
self.grid_rowconfigure(7,weight=1)
self.grid_rowconfigure(8,weight=1)
self.grid_rowconfigure(9,weight=1)
self.grid_rowconfigure(10,weight=1)

app = Application(None)
app.mainloop()

最佳答案

通过为网格中的所有行和列赋予非零权重,您可以显式地使它们随主窗口调整大小。

由于您只想调整列表框的大小,因此仅向包含列表框的行和一列赋予非零权重:

def main(self):
...
# The default weight of all rows/columns is 0. Only modify it for row 0 and column 10
self.grid_rowconfigure(0, weight=1)
self.grid_columnconfigure(10, weight=1)

有关更多信息,请查看 pack 的文档, gridplace方法。

关于python - Tkinter/Python - 调整窗口大小时禁用按钮大小调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44580116/

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