2016-11-29 3 views
1

Ich bin ein absoluter Anfänger Programmierer in PyGt. Ich habe das Buch über PyGt4 gelesen, aber jetzt haben wir PyGt5 und ich kann meine Beispiele nicht aus dem Buch ausführen.Wie übersetzt man diesen Code von PyQt4 nach PyQt5

Zum Beispiel ist dies das erste Beispiel aus dem Buch (die einfachste) Sie

from PyQt5 import QtCore, QtGui 

sehen können, aber es ist in dem Buch

from PyQt4 import QtCore, QtGui 

aber ich schrieb PyQt5, weil ich nur PyQt5 habe

# -*- coding: utf-8 -*- 
from PyQt5 import QtCore, QtGui 
import sys 

app = QtGui.QApplication(sys.argv) 
window = QtGui.QWidget() 
window.setWindowTitle("The first program in PyQt") 
window.resize(300, 70) 
label = QtGui.QLabel("<center>Hello, world!</center>") 
btnQuit = QtGui.QPushButton("&Close window") 
vbox = QtGui.QVBoxLayout() 
vbox.addWidget(label) 
vbox.addWidget(btnQuit) 
window.setLayout(vbox) 
QtCore.QObject.connect(btnQuit, QtCore.SIGNAL("clicked()"), 
QtGui.qApp, QtCore.SLOT("quit()")) 
window.show() 
sys.exit(app.exec_()) 

Fehler: Attribute: Modul 'PyQt5.QtGui' hat kein Attribut 'QApplication'

Mein Versuch, Lösung zu finden: Ich habe versucht, diesen Code auszuführen. Funktioniert nicht. Mein Programm funktioniert, aber ich kann nicht in der Nähe Schaltfläche „Fenster schließen“

from PyQt5.QtWidgets import QApplication, QWidget 
from PyQt5 import QtCore, QtGui 
from PyQt5.QtCore import QObject, pyqtSignal 
from PyQt5.QtWidgets import * 
import sys 

app = QApplication(sys.argv) 
window = QWidget() 
window.setWindowTitle("The first example in PyQt") 
window.resize(300, 70) 

label = QLabel("<center>Hello, world!</center>") 
btnQuit = QPushButton("&Close window") 
vbox = QVBoxLayout() 
vbox.addWidget(label) 
vbox.addWidget(btnQuit) 
window.setLayout(vbox) 

closed = pyqtSignal() 
range_changed = pyqtSignal(int, int, name='rangeChanged') 
valueChanged = pyqtSignal([int], ['QString']) 

window.show() 
sys.exit(app.exec_()) 
+1

Allgemein gilt: die Dokumentation (Py) QT5 überprüfen und die Suche nach die fehlende Klasse. Es könnte nur in einem anderen Modul sein. – Trilarion

+0

http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html – matth

Antwort

2

Ihre Fenster schließen Sie eine Verbindung herstellen, um Ihre Schaltfläche Signal an die Schließfunktion des Fensters angeklickt

btnQuit.clicked.connect(window.close) 

Der gesamte Code würde sein:

from PyQt5.QtWidgets import * 
from PyQt5.QtCore import pyqtSignal 
import sys 

app = QApplication(sys.argv) 
window = QWidget() 
window.setWindowTitle("The first example in PyQt") 
window.resize(300, 70) 

label = QLabel("<center>Hello, world!</center>") 
btnQuit = QPushButton("&Close window") 
vbox = QVBoxLayout() 
vbox.addWidget(label) 
vbox.addWidget(btnQuit) 
window.setLayout(vbox) 

btnQuit.clicked.connect(window.close) 

window.show() 
sys.exit(app.exec_()) 

für Ihre ungenutzten Einfuhren Seien Sie vorsichtig, sollten Sie verwenden

from PyQt5 import QtWidgets 

und ersetzen QApplication durch QtWidgets.QApplication, QLabel von QtWidgets.QLabel etc ...

Beachten Sie, dass Signale Stil seit PyQt5 geändert haben: Description

Verwandte Themen