Найти - Пользователи
Полная версия: PyQt не срабатывает сигнал.
Начало » GUI » PyQt не срабатывает сигнал.
1 2
reclosedev
Причина в том, что Ui_Form2 присваивается локальной переменной ui, которая уничтожается после выхода из функции, а вместе с ней и обработчик нажатия. Достаточно сохранить ее, например, как атрибут, и все заработает:
def click(self):
    ...
    ui = Ui_Form2(self.Form2)
    self.form2_ui = ui
    ...

Но само создание класса без наследования QWidget неудобно, плюс нужно хранить и виджет и объект. Если код создается в дизайнере, посмотрите http://pyqt.sourceforge.net/Docs/PyQt4/designer.html#using-the-generated-code (2-й и 3-й примеры). Если вручную, то у young_programmer (только __call__ я бы не использовал)
young_programmer
reclosedev
только __call__ я бы не использовал
Без __call__ не работало бы.
vrabey
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_())

reclosedev спасибо. всё оказалось просто
young_programmer
Спасибо, vrabey и reclosedev, учту на будующие)
Jah
reclosedev
Причина в том, что Ui_Form2 присваивается локальной переменной ui, которая уничтожается после выхода из функции, а вместе с ней и обработчик нажатия. Достаточно сохранить ее, например, как атрибут, и все заработает:
Хех, спасибо. Интересно то, что я с такой ошибкой уже несколько раз сталкивался, только в том случае окно появлялось и моментально закрывалось. А в этом случае как то и не заметил, что допустил ту же самую ошибку.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB