Найти - Пользователи
Полная версия: PyQt слоты
Начало » GUI » PyQt слоты
1
billy_bob
Ребят, подскажите.
есть гуй, сконструированный в Qt Designer-e. В нем создал несколько Qaction-ов. Создал главный файл.
import sys
from PyQt4 import QtGui, QtCore
from MainForm import Ui_MainWindow

class Main(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui=Ui_MainWindow()
self.ui.setupUi(self)
self.statusBar().showMessage("Ready")
self.connect(self.ui.actionExit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()'))
self.connect(self.ui.actionDBOpen, QtCore.SIGNAL('triggered()'), QtCore.SLOT('self.openDB()'))

def openDB(self):
self.statusBar().showMessage("DB open")

def main():
app = QtGui.QApplication(sys.argv)
window=Main()
window.show()
sys.exit(app.exec_())

if __name__ == '__main__':
main()
self.connect(self.ui.actionExit, QtCore.SIGNAL('triggered()'), QtCore.SLOT('close()')) отрабатывает нормально, а вот
self.connect(self.ui.actionDBOpen, QtCore.SIGNAL('triggered()'), QtCore.SLOT('self.openDB()')) ругается
Object::connect: No such slot Main::self.openDB()
Object::connect: (sender name: 'actionDBOpen')
Object::connect: (receiver name: 'MainWindow')
Я так понял я не в тот класс функцию загнал? Если так, то куда надо?
billy_bob
эм. ничего не понял. переписал на новый стиль - все заработало.
self.ui.actionDBOpen.triggered.connect(self.openDB)
Почему так?
Андрей Светлов
метод .openDB ни разу не слот. Или декларируйте слот и работайте с ним или просто
self.connect(self.ui.actionDBOpen, QtCore.SIGNAL('triggered()'), self.openDB)
billy_bob
Андрей Светлов
метод .openDB ни разу не слот. Или декларируйте слот и работайте с ним или просто
self.connect(self.ui.actionDBOpen, QtCore.SIGNAL('triggered()'), self.openDB)
хм. вот если я его объявляю предложенным вами способом, то он исполняется сразу при запуске программы и никогда больше. уже пробовал так.
billy_bob
ой. извините пожалуйста. точно, заработал. а почему его передают без скобок?
billy_bob
.
Андрей Светлов
Передают ссылку на python callable, а не имя слота
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