Форум сайта python.su
Ребят, подскажите.
есть гуй, сконструированный в 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()
Object::connect: No such slot Main::self.openDB()
Object::connect: (sender name: 'actionDBOpen')
Object::connect: (receiver name: 'MainWindow')
Офлайн
эм. ничего не понял. переписал на новый стиль - все заработало.
self.ui.actionDBOpen.triggered.connect(self.openDB)
Офлайн
метод .openDB ни разу не слот. Или декларируйте слот и работайте с ним или просто
self.connect(self.ui.actionDBOpen, QtCore.SIGNAL('triggered()'), self.openDB)
Офлайн
Андрей Светловхм. вот если я его объявляю предложенным вами способом, то он исполняется сразу при запуске программы и никогда больше. уже пробовал так.
метод .openDB ни разу не слот. Или декларируйте слот и работайте с ним или просто
self.connect(self.ui.actionDBOpen, QtCore.SIGNAL('triggered()'), self.openDB)
Офлайн
ой. извините пожалуйста. точно, заработал. а почему его передают без скобок?
Офлайн
.
Отредактировано (Ноя. 15, 2010 13:09:35)
Офлайн
Передают ссылку на python callable, а не имя слота
Отредактировано (Ноя. 15, 2010 13:20:14)
Офлайн