以下代码用于我使用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)
答案 0 :(得分:3)
%
运算符从索引除法得到的余数为3,因此在9次迭代中它将产生 0,1,2,0,1,2,0,1,2 按此顺序。换句话说,它为每次迭代在值0,1和2上“循环”。
使用/
,您可以将索引的最低分数计算为3: 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)