如何在栅格几何图形管理器中防止行对齐?

2024-04-25 07:33:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Tk接口,看起来像这样

enter image description here

如您所见,我有3列(如果您计算标签数,则为4列)。我希望条目(及其标签)不与右侧的按钮对齐,因为按钮和条目的数量不同,对齐它们看起来很糟糕

此外,我将画布跨多行,这样条目将保留在画布的左侧,但这会导致条目之间留有较大的空白

我有两个相关的问题

  • 我应该使用已安装的包几何体管理器吗?如果是,怎么做
  • 如果网格能够做到这一点,我将如何实现

这是我的密码

class Main(tk.Frame):

    w = 600
    h = 600

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

        self.parent = parent

        ### variables ###
        self.iterations = tk.StringVar()
        self.angle = tk.StringVar()
        self.axiom = tk.StringVar()
        self.rule1 = tk.StringVar()
        self.rule2 = tk.StringVar()
        self.rule3 = tk.StringVar()
        self.rule4 = tk.StringVar()
        self.constants = tk.StringVar()

        ### Labels ###
        tk.Label(self, text="Iterations").grid(column=0,row=0)
        tk.Label(self, text="angle").grid(column=0,row=1)
        tk.Label(self, text="axiom").grid(column=0,row=2)
        tk.Label(self, text="rule1").grid(column=0,row=3)
        tk.Label(self, text="rule2").grid(column=0, row=4)
        tk.Label(self, text="rule3").grid(column=0, row=5)
        tk.Label(self, text="rule4").grid(column=0, row=6)
        tk.Label(self, text="constants").grid(column=0, row=7)


        ### Entries ###
        tk.Entry(self, textvariable=self.iterations).grid(column=1,row=0)
        tk.Entry(self, textvariable=self.angle).grid(column=1,row=1)
        tk.Entry(self, textvariable=self.axiom).grid(column=1,row=2)
        tk.Entry(self, textvariable=self.rule1).grid(column=1,row=3)
        tk.Entry(self, textvariable=self.rule2).grid(column=1, row=4)
        tk.Entry(self, textvariable=self.rule3).grid(column=1, row=5)
        tk.Entry(self, textvariable=self.rule4).grid(column=1, row=6)
        tk.Entry(self, textvariable=self.constants).grid(column=1, row=7)

        ### Render Button ###
        tk.Button(self, text="render", command=self.render_image).grid(column=0, row=8, columnspan=2)

        ### Preset Buttons ###
        tk.Button(self, text="Koch Snowflake", command=self.snowflake).grid(column=3, row=0)
        tk.Button(self, text="Custom 1", command=self.custom1).grid(column=3, row=1)

        ### Canvas ###
        self.cv = tk.Canvas(self, width=self.w, height=self.h, bg='white')
        self.cv.grid(column=2, rowspan=9, row=0)

        self.grid()

Tags: textself条目columnbuttonlabeltkgrid
1条回答
网友
1楼 · 发布于 2024-04-25 07:33:29

在列中使用框架,然后可以在每个框架中使用不同的管理器网格/打包/放置

除此之外,您可以使用不同的按钮获得一些帧,并显示/隐藏帧以替换所有按钮(网格(忘记/打包(忘记/放置(忘记))

相关问题 更多 >