1

前提:我正在尝试在 Tkinter 中制作一堆按钮,并将它们一个接一个地放在网格布局中。我不想硬编码每个网格值,这样我以后可以轻松地添加更多按钮。

我的第一个想法是:

Button(root, text = "example", command = self.example_action).grid(row = count++)

但这不起作用,我做了一些搜索,发现 python 没有前置或后置增量运算符(Python 中增量和减量运算符的行为)。所以我的下一个想法是:

Button(root, text = "example", command = self.example_action).grid(row = count = count + 1)

这给出了: SyntaxError: invalid syntax

因此,除了将我的代码分成两行(使用变量然后在下一行更新它)之外,有没有一种好方法可以在一行上完成这一切以使我的代码更漂亮?

4

2 回答 2

1

我想你可以使用发电机。初始化计数,如:

count = itertools.count()

那么您可以随心所欲地执行以下操作

Python 2.x:

Button(root, text = "example", command = self.example_action).grid(row = count.next())

Python 3.x:

Button(root, text = "example", command = self.example_action).grid(row = next(count))

但我可能不会

于 2013-07-17T21:57:30.113 回答
0

我想计数是一个整数。由于它是不可变的,因此您将无法更改其值。换句话说,无论你对函数内部的“行”做什么,函数返回后,“行”的值都不会改变。

>>> row = 2
>>> def plus(i):
...     i = i + 1
...
>>> plus(row)
>>> row
2
>>>

所以我建议你将'row'存储为一个实例变量,这样你就可以通过'self.row += 1'来改变它的值

于 2013-07-17T21:52:45.080 回答