Форум сайта python.su
Причина в том, что Ui_Form2 присваивается локальной переменной ui, которая уничтожается после выхода из функции, а вместе с ней и обработчик нажатия. Достаточно сохранить ее, например, как атрибут, и все заработает:
def click(self): ... ui = Ui_Form2(self.Form2) self.form2_ui = ui ...
Офлайн
reclosedevБез __call__ не работало бы.
только __call__ я бы не использовал
Офлайн
young_programmer__call__ наверное один из способов и скорее пригодился бы при передаче парабетров в класс ,т.е именно здесь он избыточен
Без __call__ не работало бы.
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui class Window(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.button1 = QtGui.QPushButton(u"Пробуй", self) self.button1.setMinimumSize(QtCore.QSize(150, 70)) self.button1.clicked.connect(self.on_click) def on_click(self): self.button1.setText(u"УРА") class MainWindow(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.resize(200, 150) button = QtGui.QPushButton(u'Нажми меня', self) self.connect(button, QtCore.SIGNAL("clicked()"), self.click) def click(self): self.twoWindow = Window() self.twoWindow.show() app = QtGui.QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())
Отредактировано vrabey (Авг. 25, 2013 14:32:13)
Офлайн
Спасибо, vrabey и reclosedev, учту на будующие)
Офлайн
reclosedevХех, спасибо. Интересно то, что я с такой ошибкой уже несколько раз сталкивался, только в том случае окно появлялось и моментально закрывалось. А в этом случае как то и не заметил, что допустил ту же самую ошибку.
Причина в том, что Ui_Form2 присваивается локальной переменной ui, которая уничтожается после выхода из функции, а вместе с ней и обработчик нажатия. Достаточно сохранить ее, например, как атрибут, и все заработает:
Офлайн