首先是一些代码
from Tkinter import*
def button (source, side, text, command = None) :
storeObj = Button(source, text=text, command=command)
storeObj.pack(side=side, expand=YES, fill=BOTH)
return storeObj
EqualsButton = Calculator(self, TOP)
for Equals in '=':
if Equals == '=':
btnEquals = button(EqualsButton, LEFT, Equals)
btnEquals.bind('<ButtonRelease-1>',
lambda e, s=self, storeObj=display: s.calc(storeObj), '+')
else:
btnEquals = button(EqualsButton, LEFT, Equals,
lambda storeObj=display, s=' %s ' %Equals: storeObj.set(storeObj.get()+s))
def calc(self, display):
try:
display.set(eval(display.get()))
except:
display.set("ERROR")
if __name__ == '__main__':
app().mainloop()
我了解前几个模块的大部分内容,我可以稍后调用这些函数来构建计算器(即按钮和框架)。我不明白的事情,也没有一个解释是语法,如storeObj,和存储对象包. 我也不完全理解实际的计算是在哪里执行的,我会假设它在EqualsButton块中,特别是两个lambda语句中,尽管我熟悉很多语法,但我还是不能理解lambda实际上在做什么。我用C语言编写了一个计算器,它相当直观,但是当涉及到这个python代码时,我不知道我在看什么,或者我应该找什么。如果有人给我一个简短的介绍就好了。新来的编程,所以请原谅豌豆脑。你知道吗
编辑:剪切一些不相关的代码。已经有很好的答案了谢谢。我可以PM的所有人想要它的完整程序。你知道吗
分配的变量就是这样。由编码器分配。我有一个变量\u name=object。如果在某个点上使用了特定于Tkinter的变量,那么很可能是Tkinter方法的参数中使用的伪常量。永远不要尝试更改tkinter库中的预定义变量。你知道吗
pack()
部分只是将Frame对象放在用户要查看的根窗口中。你知道吗pack()
是一组几何管理器的一部分,用于在GUI上放置对象,如框架、文本框或输入字段等。有关pack()
或任何几何图形管理器的详细信息,请参见tkinter文档。你知道吗Lambda语句也有大量的文档记录,但它们只是匿名函数。这意味着您不需要为此函数指定名称。它们也是单行函数。它们在python和tkinter中很常见。你知道吗
至于计算实际发生的位置是
eval
操作。 这是用于执行实际计算的代码。你知道吗此方法具体用于执行计算:
由于
eval
对于较新的程序员或对python不熟悉的程序员来说并不常见,因此我可以看出您是如何不确定在哪里可以计算它的,但是函数名应该是一个线索,因为calc
是calculation
或calculate
的缩写。你知道吗相关问题 更多 >
编程相关推荐