【问题标题】:Tkinter button creationTkinter 按钮创建
【发布时间】:2016-07-31 21:11:42
【问题描述】:

我有一个我不知道长度的字符串列表。他们列出的字符串可能在 5 到 20 个之间...

如何为该列表中的每个字符串创建一个按钮,这些按钮将穿过屏幕直到屏幕结束,然后进入下一行并再次继续。

def fileButtons():
    for i, k in enumerate(initialfiles):
        initButtons = Button(master, text=k).grid(column = i, row = 1)

此代码只会使按钮一直穿过,并且永远不会返回到新行。即使我创建了一个框架并将按钮放入框架中,它也不会进入下一行。我假设这是因为我将行定义为 1。

【问题讨论】:

  • 在编辑您的答案方面做得很好,因为它看起来不那么小气,但是对我的问题进行投票却为您完成了这一点。我只是说我知道问题所在,但不知道如何解决。
  • 你不知道我是否投反对票。我会说我认为这个问题值得一票否决 - 它绝对没有任何研究的尝试,或者任何试图自己解决问题的尝试。您甚至知道问题出在哪里,但没有采取逻辑步骤尝试使用单独的行号来查看会发生什么。你很聪明,可以自己解决这个问题。
  • 感谢您的建设性批评。你是对的。从现在开始,我将展示我的研究并更好地整理我的问题。

标签: python button tkinter grid


【解决方案1】:

我想为我个人寻找的内容提供一个确切的答案:

def buttonUI(self):
    row = 0
    column = 0
    for i, k in enumerate(initialfiles):
        if i >= 4:
            row += 1
        column += 1
        if column == 4:
            column = 0
        b = Button(self,text=k).grid(column = column, row = row, sticky=W+E)

    self.pack()

加上 Slayer 回答的内容,我还定义了列。最后,为了让它看起来更好看,我添加了粘性选项,因为“k”的长度因每个按钮而异。感谢您的输入。

【讨论】:

    【解决方案2】:

    你是对的,因为你输入的每一行都是 1。所以,小部件都将在网格内,具有不同的列,但都在同一行。

    您需要创建某种断点来将小部件放置在新行上。

    这是一个随机示例,您可以根据自己的需要进行调整。

    def fileButtons():
        row = 1
        for i, k in enumerate(initialfiles):
            if i % 2: row += 1
            initButtons = Button(master, text=k).grid(column = i, row = row)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 2013-02-06
      • 2016-04-28
      • 1970-01-01
      • 2022-11-04
      • 2019-07-03
      • 1970-01-01
      相关资源
      最近更新 更多