Форум сайта python.su
0
Здравствуйте!
Пытаюсь разобраться с PyQt4 создавая простейший “калькулятор”.
Не совсем понимаю момент с передачей данных в обработчик и дальнейшей работой с результатами выполнения функции.
По шагам:
Нажимаем на button1, функция возвращает 1.
Нажимаем на button2, функция возвращает 2.
Как сделать так, чтобы при нажатии на button3 (=равно) происходило суммирование:1+2 ???
#!/usr/bin/env python # -*- coding: cp1251 -*- from PyQt4 import QtCore, QtGui class MyWindow(QtGui.QWidget): def __init__(self, parent=None): y=0 QtGui.QWidget.__init__(self, parent) self.setWindowTitle(u"1+2") self.resize(300, 100) self.button1 = QtGui.QPushButton(u"1") self.button2 = QtGui.QPushButton(u"2") self.button3 = QtGui.QPushButton(u"=") vbox = QtGui.QVBoxLayout() vbox.addWidget(self.button1) vbox.addWidget(self.button2) vbox.addWidget(self.button3) self.setLayout(vbox) self.connect(self.button1, QtCore.SIGNAL("clicked()"), lambda : self.on_clicked_button1(1)) self.connect(self.button2, QtCore.SIGNAL("clicked()"), lambda : self.on_clicked_button2(2)) self.connect(self.button3, QtCore.SIGNAL("clicked()"), lambda : self.on_clicked_button3(self.on_clicked_button1(), self.on_clicked_button2())) def on_clicked_button1(self,x=0): print(u"Нажата кнопка button1") print x, type(x) return x def on_clicked_button2(self,y=0): print(u"Нажата кнопка button2") print y, type(y) return y def on_clicked_button3(self,x=0,y=0): print(u"Нажата кнопка button3") z=x+y print ('x= ', x) print ('y=', y) print ('z= ',z) return z if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_())
Офлайн
186
#!/usr/bin/env python # -*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui class MyWindow(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.setWindowTitle(u"1+2") self.resize(300, 100) self.button1 = QtGui.QPushButton(u"1") self.button2 = QtGui.QPushButton(u"2") self.button3 = QtGui.QPushButton(u"=") vbox = QtGui.QVBoxLayout() vbox.addWidget(self.button1) vbox.addWidget(self.button2) vbox.addWidget(self.button3) self.setLayout(vbox) self.connect(self.button1, QtCore.SIGNAL("clicked()"), lambda : self.on_clicked_button(1)) self.connect(self.button2, QtCore.SIGNAL("clicked()"), lambda : self.on_clicked_button(2)) self.connect(self.button3, QtCore.SIGNAL("clicked()"), self.ravno) self.stek = [] def on_clicked_button(self,x=0): self.stek.append(x) def ravno(self): z = sum(self.stek) print z return z if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) window = MyWindow() window.show() sys.exit(app.exec_())
Офлайн
0
Rodegast, спасибо за решение!
Как я понимаю, мы создаем список и вносим в него всю последовательность действий с кнопками, а затем просто суммируем все элементы списка.
Офлайн