0

下面的代码用于我使用 Tkinter 制作的一个简单的计算器,以实现一个简单的 gui。我是 Python 新手,它基本上是我的第一门编程语言。这是我第一次尝试创建 gui。计算器工作正常,差不多。到目前为止,这些按钮完成了他们应该做的事情。我的问题是:在下面的代码中,我设置了 row = index%3 和 column = index/3。这将我的按钮放置在一个不错的 3 x 3 块中。但是,我在没有完全理解的情况下使用了这个片段。我在网上找到的。我发现我可以修改它以获得理想的结果,但我并不完全清楚为什么它会以这种方式工作。我想这基本上是一个数学问题。不过,任何澄清将不胜感激。对不起,如果它的结构奇怪,我不习惯这个论坛格式化业务。

self.operators = ['+', '-', '*', '/','%','^','C','M','M+']     
for index in range(9):
  Button(self.opFrame, relief=GROOVE, bg="light yellow", 
    text=self.operators[index], width=3, height=1,
    command=lambda arg=self.operators[index],
    arg2=self.num_dict,
    arg3=self.num_list,
    arg4=self.count : self.buttonClick(arg,arg2,arg3,arg4)).grid(padx=2,pady=2,row=index%3,column=index/3)
4

1 回答 1

3

%运算符产生索引除以三的余数,因此在九次迭代中,它将按此顺序产生0、1、2、0、1、2、0、1、2。换句话说,它在每次迭代中“循环”值 0、1 和 2。

使用/,您可以计算指数除以三:0, 0, 0, 1, 1, 1, 2, 2, 2。这样,您每三次迭代就移动到下一列。

如果您更改运算符的顺序并按如下方式排列,则更容易看到它self.operator

self.operators = ['+', '/', 'C',
                  '-', '%', 'M',
                  '*', '^', 'M+']

for index in range(9):
    Button(...).grid(padx=2,pady=2,row=index/3,column=index%3)
于 2013-04-08T21:44:28.100 回答