Ich versuche eine PyQt-Anwendung zu erstellen, die sowohl eine Statusleiste als auch eine Menüleiste mit anderen Widgets im Fenster enthält. Unten ist der Code, den ich es geschafft habe, es mit Klasse QtGui.QMainWindow
Methode laufen zu lassen. Aber als ich weitere Funktionen hinzufügen möchte, merke ich, dass ich stattdessen QtGui.QWidget
verwenden muss. Hier
PyQt mit Statusleiste und Menüleiste QWidget
ist der Code:
import sys
from PyQt4 import QtGui, QtCore
### How can I use QtGui.QWidget here??? ###
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
QtGui.QToolTip.setFont(QtGui.QFont('SansSerif', 10))
self.setToolTip('This is a <b>QWidget</b> Window widget')
exitAction = QtGui.QAction(QtGui.QIcon('exit-icon-2.png'), '&Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.setStatusTip('Exit/Terminate application')
exitAction.triggered.connect(QtGui.qApp.quit)
self.statusBar()
menubar = self.menuBar()
menubar.setToolTip('This is a <b>QWidget</b> for MenuBar')
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(exitAction)
toolbar = self.addToolBar('Exit')
toolbar.addAction(exitAction)
qbtn = QtGui.QPushButton('Quit', self)
qbtn.setToolTip('This is a <b>QPushButton</b> widget')
qbtn.clicked.connect(self.launchAAA)
qbtn.resize(qbtn.sizeHint())
qbtn.move(170, 190)
self.setGeometry(500, 180, 400, 400)
self.setWindowTitle('Quit button with Message')
self.show()
def launchAAA(self, event):
reply = QtGui.QMessageBox.question(self, 'Message',
"Are you sure to quit?", QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
QtGui.QApplication.quit()
else:
pass
def main():
app = QtGui.QApplication(sys.argv)
ex=Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
ich unter dem Eindruck, dass am Menüleiste und Titelleisten erstellt werden können QWidget Methode verwendet, aber hier funktioniert es nicht. Ich beabsichtige, der Anwendung eine LCD-Funktion hinzuzufügen, die QtGui.QLCDNumber
verwendet.
Alle Vorschläge zur Behebung des obigen Problems. Danke
@Mailerdaimon QWidget hat Funktionen wie LCD-Display, vbox und hbox Funktionen, die ich später brauchen könnte? Ich bin verwirrt über deine Frage, kannst du mir bitte mehr erzählen. – SamAct
Ein normaler Ansatz besteht darin, ein QMainWindow zu erstellen und ein zentrales QWidget für dieses Fenster mit 'void QMainWindow :: setCentralWidget (QWidget * widget)' zu setzen. Plus: QMainWindow wird von QWidget geerbt, was bedeutet, dass es alle Funktionen eines QWidgets plus mehr hat. – Mailerdaimon
@Mailerdaimon also QMainWindow hat alle geerbten Funktionen von QWidget, so sollte es in Ordnung sein, es zu verwenden. Und wenn Sie ein zentrales QWidget einrichten, sollten Sie meine Probleme beheben. Können Sie mich auf Änderungen hinweisen, die sich auf den obigen Code beziehen? – SamAct