2017-01-23 13 views
0

Hier sehr stecken, versuche ich zu lernen, wie man Klassen verwendet, und so einfach eine Schaltfläche in einem Fenster anzeigen möchten, wenn die Schaltfläche in einer anderen Klasse ist. Hier ist der Code, den ich zu verwenden Ich versuche:PyQt mit Klassen zum Anzeigen der Schaltfläche

#!/usr/bin/python3 

import sys 
from PyQt4 import QtGui, QtCore 

class Window(QtGui.QDialog): 

    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.setGeometry(0, 0, 800, 600) 
     main_menu = Menu() 

     self.show() 

class Menu(QtGui.QWidget): 

    def __init__(self): 
     btn = QtGui.QPushButton("Quit") 
     btn.resize(btn.sizeHint()) 
     btn.move(100,100) 
     btn.show() 
     print("Hello I am a menu") 




def main(): 
    app = QtGui.QApplication(sys.argv) 
    main_window = Window() 

    sys.exit(app.exec()) 


if __name__ == "__main__": 
    main() 

Das funktioniert so weit, wie ich ein Fenster, aber keine Taste darauf, howerver Druck Botschaft, die ich in den Werken setzen. Was mache ich bitte falsch?

+0

verwirren sie nicht mit Tasten in anderen Klassen. – furas

+0

Änderung an 'sys.exit (app.exec _())' – answerSeeker

Antwort

1

Sie müssen die übergeordnete Klasse in Menu initialisieren, zusätzlich zum Übergeben des übergeordneten Elements an die Klasse und die Schaltfläche.

import sys 
from PyQt4 import QtGui, QtCore 

class Window(QtGui.QDialog): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.setGeometry(0, 0, 800, 600) 
     main_menu = Menu(self) 
     self.show() 

class Menu(QtGui.QWidget): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     btn = QtGui.QPushButton("Quit", self) 
     btn.resize(btn.sizeHint()) 
     btn.move(100,100) 
     print("Hello I am a menu") 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    main_window = Window() 

    sys.exit(app.exec_()) 


if __name__ == "__main__": 
    main() 

enter image description here

+0

'sys.exit (app.exec _())' stattdessen – answerSeeker

+0

@answerSeeker danke – eyllanesc

+0

eyllanesc, kein Problem. – answerSeeker

Verwandte Themen