【问题标题】:Center widgets with same distance to each other/ to window border tkinter中心小部件彼此距离相同/到窗口边框 tkinter
【发布时间】:2022-06-17 17:00:57
【问题描述】:

当我将小部件直接放在根窗口中时,我可以使用 grid_columnconfigure 但正如你在图片中看到的那样,一个到另一个小部件之间的距离是寄宿生的两倍,我也想要同样的距离。实际上,它不应该放在根目录中,而是放在 Frame/ LabelFrame 中,但甚至没有可能的 grid_columnconfigure 方法,为什么会这样?

import tkinter as tk

class MainApplication(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent

        parent.grid_columnconfigure((0, 1, 2), weight=1)

        self.label1 = tk.Label(root, text="test", bg="green").grid(row=0, column=0)
        self.label2 = tk.Label(root, text="test", bg="green").grid(row=0, column=1)
        self.label3 = tk.Label(root, text="test", bg="green").grid(row=0, column=2)

if __name__ == "__main__":
    root = tk.Tk()
    root.state("zoomed")
    MainApplication(root)
    root.mainloop()

【问题讨论】:

  • "但是甚至没有 grid_columnconfigure 方法可能,为什么会这样?" - 为什么你认为不可能?你试过了吗?
  • 对于您的情况,您需要将文本放在第 1、3、5 列,并在第 0、2、4、6 列设置 weight=1

标签: python tkinter widget center


【解决方案1】:

@Bryan Oakley 确定我试过了,我试了几个小时但没有让它运行,但我认为我现在发现了我的错误

我写的

frame0 = tk.Label(parent).pack(fill="x")

而不是

frame0 = tk.Label(parent)
frame0.pack(fill="x")

但不明白为什么第一个在这种情况下不起作用

@acw1668 非常非常,就是这样,我不认为可以给空列一个权重

import tkinter as tk

class MainApplication(tk.Frame):
    def __init__(self, parent, *args, **kwargs):
        tk.Frame.__init__(self, parent, *args, **kwargs)
        self.parent = parent


        frame0 = tk.Label(parent)
        frame0.pack(fill="x")

        frame0.grid_columnconfigure((0, 2, 4, 6), weight=1)



        self.label1 = tk.Label(frame0, text="test", bg="green").grid(row=0, column=1)
        self.label2 = tk.Label(frame0, text="test", bg="green").grid(row=0, column=3)
        self.label3 = tk.Label(frame0, text="test", bg="green").grid(row=0, column=5)



if __name__ == "__main__":
    root = tk.Tk()
    root.state("zoomed")
    MainApplication(root)
    root.mainloop()

【讨论】:

  • 为什么把三个标签放在另一个标签(frame0)里,而不是self
【解决方案2】:

我不知道,我对 python 和 tkinter 很陌生(几周),总的来说我不是那么高级的程序员,你能告诉我,你会如何编写这个代码?我还有一个关于我上一个问题的问题,我很确定你可以回答这个问题,我想将动态创建的帧放入其他帧但它们都应该慢跑,我想问你个人,有吗怎么做?我发誓我不会打扰你,只是很少的问题,我找不到谷歌,你很好;)

【讨论】:

    猜你喜欢
    • 2016-05-14
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多