Проверка, была ли нажата кнопка
Как я могу проверить, была ли нажата кнопка? Может ли этот код работать или мне нужно использовать другую команду / синтаксис?
def div_clicked(self, button14):
self.entry.set_text(self.entry.get_text() + str("/"))
if button14 == "clicked":
self.equal_clicked()
self.arithmetic = "division"
Особенно эта строка:
if button14 == "clicked":
Я хотел бы знать, как я могу изменить код, чтобы self.equal_clicked()
функция вызывается.
2 ответа
Решение
Расширить свой код вы можете сделать эту форму тоже
self.button14.connect("clicked", self.button14_click, "division")
def button14_click(self, button, data):
self.entry.set_text(self.entry.get_text() + str("/"))
self.equal_clicked()
self.arithmetic = data
Поскольку ваш вопрос помечен как pygtk, я предполагаю, что вы используете GTK 2. В этом случае проверьте http://www.pygtk.org/pygtk2tutorial/ch-GettingStarted.html.
Это даст вам хорошую отправную точку в том, как обрабатываются нажатия кнопок и другие события. Я вставил слегка раздетую версию ниже:
import pygtk
pygtk.require('2.0')
import gtk
class HelloWorld:
# This is a callback function. The data arguments are ignored
# in this example. More on callbacks below.
def hello(self, widget, data=None):
print "Hello World"
def destroy(self, widget, data=None):
gtk.main_quit()
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("destroy", self.destroy)
# Creates a new button with the label "Hello World".
self.button = gtk.Button("Hello World")
# When the button receives the "clicked" signal, it will call the
# function hello() passing it None as its argument. The hello()
# function is defined above.
self.button.connect("clicked", self.hello, None)
self.window.add(self.button)
self.button.show()
self.window.show()
def main(self):
# All PyGTK applications must have a gtk.main(). Control ends here
# and waits for an event to occur (like a key press or mouse event).
gtk.main()
if __name__ == "__main__":
hello = HelloWorld()
hello.main()