gpt4 book ai didi

Python tkinter rowspan 无法正确调整元素大小

转载 作者:太空宇宙 更新时间:2023-11-03 13:39:21 29 4
gpt4 key购买 nike

我正在编写一个自定义 Python 类来简化与 tkinter 的交互,这样我就可以简化编写自己的 GUI 应用程序的过程。到目前为止,这很棘手,但进展一直很稳定,而且效果很好。

但是,我遇到了特定的意外行为,我无法查明原因。当我将一个元素定义为具有 rowspan 时,它不会扩展以适应我指定的行数。

这是我当前输出的屏幕截图:

Not what I was hoping for

截图中的GUI是按照指定的顺序定义的:

  • 10 个标签被定义为“1”到“10”,位于单元格 0,0 - 0,10 中。

  • 添加了一个 rowspan = 1 的框架,其中包含标签“Rowspan 1”到 1,0

  • 将 rowspan = 2 的帧添加到 2,0

  • 将 rowspan = 3 的帧添加到 3,0

  • ...

  • 将 rowspan = 10 的帧添加到 10,0

  • 带有“After Stretched”的标签被添加到 11,0

    如您在上面的屏幕截图中所见,rowspan 似乎与设置的 rowspan 不匹配。

相关代码如下:

    self.frame = tkinter.Frame(self.frame, borderwidth=1, relief=border)
self.frame.grid(row=self.grid_y, column=self.grid_x,
columnspan=self.grid_x_span, rowspan=self.grid_y_span,
padx=5, pady=5, sticky="nsew")

print("Frame:")
print("X,Y:",self.grid_x,self.grid_y)
print("X,Y Spans:",self.grid_x_span, self.grid_y_span)

...这里是打印输出,显示生成此输出时变量的值:

    Frame:
X,Y: 1 0
X,Y Spans: 1 1
Frame:
X,Y: 2 0
X,Y Spans: 1 2
Frame:
X,Y: 3 0
X,Y Spans: 1 3
Frame:
X,Y: 4 0
X,Y Spans: 1 4
Frame:
X,Y: 5 0
X,Y Spans: 1 5
Frame:
X,Y: 6 0
X,Y Spans: 1 6
Frame:
X,Y: 7 0
X,Y Spans: 1 7
Frame:
X,Y: 8 0
X,Y Spans: 1 8
Frame:
X,Y: 9 0
X,Y Spans: 1 9
Frame:
X,Y: 10 0
X,Y Spans: 1 10

知道为什么会发生这种情况吗?当我对 rowspan 进行硬编码时,它仍然表现出这种行为。

最佳答案

所以你想要这样的东西:

enter image description here

代码如下:

import tkinter as tk

root = tk.Tk()
main_frame = tk.Frame(root, border=3, relief=tk.GROOVE)
main_frame.grid()

for i in range(10):

#Create Labels for numbering the rows:
tk.Label(main_frame,
text=str(i+1),
border=1,
relief=tk.GROOVE,
padx=20,
pady=20,
).grid(column=0, row=i)

#Create Frames with a Label inside:
frame = tk.Frame(main_frame,
border=1,
relief=tk.GROOVE,
background="blue",
)

frame.grid(row=0, column=i+1, rowspan=i+1, sticky=tk.N+tk.S)

tk.Label(frame,
text='Rowspan {}'.format(i+1),
border=1,
relief=tk.GROOVE,
padx=20,
pady=20,).grid()

root.mainloop()

通常情况下,框架会将小部件包裹在其中。 grid() 的 sticky 参数使框架垂直拉伸(stretch)并填充由 rowspan 指定的行。

如果你移除标签周围的边框和框架的背景颜色,你会得到这个:

enter image description here

关于Python tkinter rowspan 无法正确调整元素大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34366068/

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