显示网格的pythonic方式是什么?

2024-10-01 15:39:14 发布

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

我正在学习Python,我想在网格中显示按钮。下面的代码生成的正是我想要的,但是通过增加x和y来显示按钮的代码看起来并不是很像python。(我来自程序语言背景)有更好的方法吗?谢谢你的帮助。你知道吗

from tkinter import *
from tkinter import ttk
root = Tk()

numberButtonsFrame = ttk.Frame(root)
numberButtonsFrame.pack()
button=[0]
for i in range(1,10):
    button.append (ttk.Button(numberButtonsFrame, text = i))

x=0
y=0
for i in range(1,10):
    button[i].grid(row=x,column=y)
    y=y+1
    if y>2:
       x=x+1
       y=0    

root.mainloop()

Tags: 代码infromimport网格fortkinterrange
2条回答

使用divmod()函数计算索引中的每一行和每一列。你知道吗

buttons_per_row = 3
for i in range(9):
    button = ttk.Button(numberButtonsFrame, text = i+1)
    row, col = divmod(i, buttons_per_row)
    button.grid(row=row, column=col)

另一种方法

像其他人一样使用两个嵌套循环,您可以通过rowcolumn简单地计算文本:

(r * 3) + c + 1

显然,这将返回一个int,因此必须应用str(),从而得到一个更简洁的解决方案:

from tkinter import *
from tkinter import ttk
root = Tk()

numberButtonsFrame = ttk.Frame(root)
numberButtonsFrame.pack()

for r in range(3):
    for c in range(3):
        ttk.Button(numberButtonsFrame, text=(r * 3) + c + 1).grid(row=r, column=c)

root.mainloop()

相关问题 更多 >

    热门问题