我正在尝试在网格上找到一些图像,但是当我尝试执行类似
的操作时panel = Label(root, image = img)
panel.grid(row = a, column = b)
其中a,b
是应该将图像带到网格中心的值,我总是将图像放在左上角,因为空列/行不会填充空格。所以,使用朋友的建议,我添加了一个空白图像,并做了类似
a = 0
b = 0
for img in ls2: # ls2 is a list containing instances of the blank image
a += 1
if a == 11:
a = 1
b += 1
panel = Label(root, image = img)
panel.grid(row = a, column = b)
现在,当我试图在row = x, column = y
上找到一个新图像时,它按照我想要的方式进行,这是我目前的解决方案。我的问题是,这是一种让我使用整个网格的好方法吗?
答案 0 :(得分:1)
不,这不是一个好方法。无需创建不可见的小部件。然而,很难说好的方法是什么,因为"使用整个网格"有点模糊。
如果通过"使用整个网格"你的意思是想要创建一个网格,其中所有行的高度相同,并且所有列的宽度相同,并且网格填充其包含的窗口,正确的解决方案是使用rowconfigure
和{创建统一的行列{1}}。
例如,如果要创建大小相等的4x4网格,可以执行以下操作:
columnconfigure
import tkinter as tk
root = tk.Tk()
for row in range(4):
root.grid_rowconfigure(row, uniform="default", weight=1)
for column in range(4):
root.grid_columnconfigure(column, uniform="default", weight=1)
label_2_2 = tk.Label(root, text="row 2, column 2", borderwidth=2, relief="groove")
label_1_0 = tk.Label(root, text="row1, column 0", borderwidth=2, relief="groove")
label_1_0.grid(row=1, column=0)
label_2_2.grid(row=2, column=2)
root.mainloop()
选项接受任意字符串。具有相同值的每一行(或列)将具有相同的尺寸。
uniform
选项告诉网格如何分配任何额外空间。通过为每行和每列提供相同的非零权重,所有额外空间将被平均分配,从而使行和列增大或缩小以适合窗口。
答案 1 :(得分:0)
刚刚找到地方几何管理器。它更明确,让我可以控制窗口小部件中图像的确切位置。
panel.place(x=100, y=100)
给出像素精度位置,这是我首先寻找的。 p>