Frage

Ich habe ein Widget (QTabeleWidget, QLabels und einige QButtons) bekam. Es wurde in Qt-Designer, gebaut und jetzt muss ich einige Dinge umzusetzen. Dafür brauche ich die mouse. Normalerweise würde ich schreibe eine Unterklasse und schreiben etwas wie folgt aus:

def mousePressEvent(self, event):
    if event.button() == Qt.LeftButton:
        print "left"
    else:
        print 'right'

Aber ich weiß nicht, wie das in Designer erstellt für ein Widget zu tun. Ich brauche es für die QTabeleWidget. Hoffe jemand kann mir helfen. Ich habe versucht, das Problem mit Hilfe von Google zu lösen, aber ohne Erfolg. Diese Seite hat mir geholfen, viele Male, so dass ich dachte, ich werde ihm einen Schuss geben und fragen.

War es hilfreich?

Lösung

Mit PyQt gibt es drei verschiedene Möglichkeiten, um die Arbeit mit Formularen in Designer erstellt:

  1. Verwenden Sie die einfache Vererbung und machen die Form eine Membervariable
  2. Verwenden Sie Mehrfachvererbung
  3. Dynamisch die Mitglieder direkt von der UI-Datei generiert

Single Vererbung :

class MyTableWidget(QTableWidget):
    def __init__(self, parent, *args):
        super(MyTableWidget, self).__init__(parent, args)
        self.ui = YourFormName()
        self.ui.setupUi(self)
        # all gui elements are now accessed through self.ui
    def mousePressEvent(self, event):
        pass # do something useful

Mehrfachvererbung :

class MyTableWidget(QTableWidget, YourFormName):
    def __init__(self, parent, *args):
        super(MyTableWidget, self).__init__(parent, args)
        self.setupUi(self)
        # self now has all members you defined in the form
    def mousePressEvent(self, event):
        pass # do something useful

Dynamisch generierte :

from PyQt4 import uic
yourFormTypeInstance = uic.loadUi('/path/to/your/file.ui')

(3) oben, werden Sie mit einer Instanz am Ende von was auch immer Basistyp Sie für Ihr Formular angegeben. Anschließend können Sie Ihre mousePressEvent außer Kraft setzen, wie gewünscht.

Ich würde empfehlen, einen Blick auf Abschnitt 13.1 im PyQt4 Referenzhandbuch . Abschnitt 13.2 spricht über die uic Modul.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top