Использование сигнала для всплывающего экрана - PullRequest
1 голос
/ 16 июня 2011

У меня небольшая проблема с использованием сигнала, чтобы появился маленький экран.Сокращая все, что у меня есть, следующий код должен показать мою проблему.

import sys
from PyQt4 import QtGui, QtCore

qApp = QtGui.QApplication(sys.argv) 

class InformatieVenster(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)
        self.setWindowTitle('Informatie')
        self.setGeometry(100,100,300,200)

informatie = InformatieVenster()  

class MenuKlasse(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        about = QtGui.QAction('About...', self)
        about.setShortcut('Ctrl+A')
        about.setStatusTip('Some text, haha')
        self.connect(about, QtCore.SIGNAL('clicked()'), QtCore.SIGNAL(informatie.show()))

        menubar = self.menuBar()
        self.Menu1 = menubar.addMenu('&File')
        self.Menu1.addAction(about)

Menu = MenuKlasse()
Venster = QtGui.QMainWindow() 
Venster.menuBar().addMenu(Menu.Menu1)
Venster.setGeometry(200, 200, 300, 300); 
size =  Venster.geometry()
Venster.show()
qApp.exec_()

Когда эта программа запущена, автоматически открывается окно «informatie».Однако ... я хочу, чтобы это происходило каждый раз, когда я нажимаю на кнопку "примерно ..." в меню или когда использую назначенный ярлык.

Как я могу улучшить свой код так, чтобы моя проблемастать историей?

Привет!

1 Ответ

3 голосов
/ 16 июня 2011

Окно отображается, потому что вы действительно звоните .show() во время подключения.Вы должны передать объект функции, а не результат вызова функции, в качестве аргумента .connect().Кроме того, вызываемая функция, если излучается сигнал, называется «слотом», второй SIGNAL() полностью не на месте.

Замените соединительную линию на:

self.connect(about, QtCore.SIGNAL('triggered()') informatie.show)

Четныйлучше использовать современный синтаксис подключения:

about.triggered.connect(informatie.show)

Кстати, не используйте абсолютные размеры в программах с графическим интерфейсом.Вместо этого используйте управление макетом.

...