Python 使用lambda函数连接计算器程序中的按钮,并在输入后显示值
所以我尝试使用lambda函数来连接计算器的按钮和函数。以下是我的一些代码:Python 使用lambda函数连接计算器程序中的按钮,并在输入后显示值,python,lambda,pygtk,Python,Lambda,Pygtk,所以我尝试使用lambda函数来连接计算器的按钮和函数。以下是我的一些代码: button1 = Gtk.Button(label = "1") lambda event: self.button_clicked(event, "1"), button1 vbox.pack_start(button1 ,True, True, 0) vbox.pack_end(button1,True,True,0) self.add(button1) 所以我基本上想在点击时计算两个数字,但在此之前,我想在条
button1 = Gtk.Button(label = "1")
lambda event: self.button_clicked(event, "1"), button1
vbox.pack_start(button1 ,True, True, 0)
vbox.pack_end(button1,True,True,0)
self.add(button1)
所以我基本上想在点击时计算两个数字,但在此之前,我想在条目中显示它们。但当我点击按钮1时,它不会显示在文本条目中。这基本上就是我需要解决的问题。我认为按钮点击功能应该适用于所有ifs。这基本上是我的问题
def button_clicked(self, value):
if (value != None):
if (value != "="):
# Add something to the text
self.entry.set_text(self.entry.get_text() + str(value))
else:
# Evaluate the text
self.result = eval(self.entry.get_text())
self.entry.set_text(self.result)
else:
# Clear the text
self.entry.set_text("")
我使用lambda函数的方法正确吗?如果没有,我该如何更改代码?既然您已经多次问过类似的问题,那么基本上是这样的:
#!/usr/bin/env python3
from gi.repository import Gtk
class Window(Gtk.Window):
def __init__(self):
super().__init__()
self.connect('delete-event', Gtk.main_quit)
grid = Gtk.Grid()
for i in range(10):
button = Gtk.Button(label=str(i))
button.connect('clicked', self.number_clicked, i)
grid.attach(button, i%3, i//3, 1, 1)
self.entry = Gtk.Entry()
button = Gtk.Button(label='=')
button.connect('clicked', self.solve_clicked)
vbox = Gtk.VBox()
vbox.pack_start(self.entry, False, False, 0)
vbox.pack_start(grid, True, True, 0)
vbox.pack_start(button, False, False, 0)
self.add(vbox)
self.show_all()
def number_clicked(self, button, i):
self.entry.set_text(self.entry.get_text() + str(i))
def solve_clicked(self, button):
# here should be the parser for the mathematical expression
pass
if __name__ == '__main__':
Window()
Gtk.main()
lambda事件:self.button\u clicked事件,1,button1不按原样执行任何操作。你能修好你的压痕吗?因为它是完全关闭的。如果当你点击它时,按钮做了你想让它做的事情,那么你做的是正确的。这是一个更可靠的测试,然后在堆栈溢出上发布代码,并询问不知道您想做什么的人,如果您已经做了您想做的事情。如果您自己的测试失败,请发布一个问题,描述它是如何失败的。我编辑了我的问题,希望它能澄清我的问题。单击按钮没有任何作用,因为您没有附加任何单击处理程序。你创建一个lambda,然后扔掉它。您需要实际将其添加为回调,例如:button1.connect'clicked',lambda。。。