PyQT5 当我们点击一个对象到菜单栏时我们要打开一个新的window
PyQT5 when we click an object to a menu bar we want to open a new window
两天前,我开始学习python以开发课程项目。我们和我的团队一起编写了下面的代码。是一个简单的第一个屏幕,包含一个图像、两个标签和一个菜单栏。
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QPushButton, QAction, QMenu, QLabel, QTextEdit
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5 import QtCore
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.left = 10
self.top = 10
self.width = 640
self.height = 480
menubar = self.menuBar()
#MEnubar horizontal
fileMenu = menubar.addMenu('Indoor Models')
fileMenu2 = menubar.addMenu('Outdoor Models')
fileMenu3 = menubar.addMenu('Report')
fileMenu4 = menubar.addMenu('About')
#menubar vertical column 1
newAct = QAction('Free Space Lost', self)
newAct2 = QAction('Okumura', self)
newAct3 = QAction('Hata', self)
newAct4 = QAction('COST 211', self)
fileMenu.addAction(newAct)
fileMenu.addAction(newAct2)
fileMenu.addAction(newAct3)
fileMenu.addAction(newAct4)
#menubar vertical column 2
newAct = QAction('Okumura', self)
newAct2 = QAction('Okumura', self)
newAct3 = QAction('Hata', self)
newAct4 = QAction('COST 211', self)
fileMenu2.addAction(newAct)
fileMenu2.addAction(newAct2)
fileMenu2.addAction(newAct3)
fileMenu2.addAction(newAct4)
self.setGeometry(300, 100, 800, 600)
#stylesheet LABEL HEADER
self.setStyleSheet("QLabel {color: #3391EF; qproperty-alignment: AlignCenter}")
label = QLabel('<font size=14><strong>Propagation Models</strong></font>', self)
label.setGeometry(QtCore.QRect(230, 40, 300, 100))
#LABEL FOR IMAGE
label2 = QLabel(self)
label2.setGeometry(QtCore.QRect(140, 140, 500, 200))
pixmap = QPixmap('1.png')
label2.setPixmap(pixmap)
label3 = QLabel('<font size=14><strong><u>Description</u></strong></font>', self)
label3.setGeometry(QtCore.QRect(230, 350, 300, 100))
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
下一步是当我们点击一个对象到菜单栏时(例如"Hata"),我们要打开一个新的window。我们坚持了这一步......在这种情况下有什么想法可以帮助我们吗?
您必须学习的第一件事是,在 PyQt 中,您应该尝试异步执行所有操作,因为您必须使用信号,这些信号在事件发生时发出,在您的特定情况下,每次按下 QAction
触发信号被发出,你必须把这个信号连接到你想在事件发生时调用的某个函数,在 PyQt 中这个函数叫做 Slot。在那个 Slot 中,你必须完成你想要的任务,在这种情况下,我将显示 QDialog
:
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
...
self.show()
newAct3.triggered.connect(self.on_triggered)
@QtCore.pyqtSlot()
def on_triggered(self):
w = QDialog(self)
w.resize(640, 480)
w.exec_()
...
两天前,我开始学习python以开发课程项目。我们和我的团队一起编写了下面的代码。是一个简单的第一个屏幕,包含一个图像、两个标签和一个菜单栏。
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QPushButton, QAction, QMenu, QLabel, QTextEdit
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5 import QtCore
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.left = 10
self.top = 10
self.width = 640
self.height = 480
menubar = self.menuBar()
#MEnubar horizontal
fileMenu = menubar.addMenu('Indoor Models')
fileMenu2 = menubar.addMenu('Outdoor Models')
fileMenu3 = menubar.addMenu('Report')
fileMenu4 = menubar.addMenu('About')
#menubar vertical column 1
newAct = QAction('Free Space Lost', self)
newAct2 = QAction('Okumura', self)
newAct3 = QAction('Hata', self)
newAct4 = QAction('COST 211', self)
fileMenu.addAction(newAct)
fileMenu.addAction(newAct2)
fileMenu.addAction(newAct3)
fileMenu.addAction(newAct4)
#menubar vertical column 2
newAct = QAction('Okumura', self)
newAct2 = QAction('Okumura', self)
newAct3 = QAction('Hata', self)
newAct4 = QAction('COST 211', self)
fileMenu2.addAction(newAct)
fileMenu2.addAction(newAct2)
fileMenu2.addAction(newAct3)
fileMenu2.addAction(newAct4)
self.setGeometry(300, 100, 800, 600)
#stylesheet LABEL HEADER
self.setStyleSheet("QLabel {color: #3391EF; qproperty-alignment: AlignCenter}")
label = QLabel('<font size=14><strong>Propagation Models</strong></font>', self)
label.setGeometry(QtCore.QRect(230, 40, 300, 100))
#LABEL FOR IMAGE
label2 = QLabel(self)
label2.setGeometry(QtCore.QRect(140, 140, 500, 200))
pixmap = QPixmap('1.png')
label2.setPixmap(pixmap)
label3 = QLabel('<font size=14><strong><u>Description</u></strong></font>', self)
label3.setGeometry(QtCore.QRect(230, 350, 300, 100))
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
下一步是当我们点击一个对象到菜单栏时(例如"Hata"),我们要打开一个新的window。我们坚持了这一步......在这种情况下有什么想法可以帮助我们吗?
您必须学习的第一件事是,在 PyQt 中,您应该尝试异步执行所有操作,因为您必须使用信号,这些信号在事件发生时发出,在您的特定情况下,每次按下 QAction
触发信号被发出,你必须把这个信号连接到你想在事件发生时调用的某个函数,在 PyQt 中这个函数叫做 Slot。在那个 Slot 中,你必须完成你想要的任务,在这种情况下,我将显示 QDialog
:
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
...
self.show()
newAct3.triggered.connect(self.on_triggered)
@QtCore.pyqtSlot()
def on_triggered(self):
w = QDialog(self)
w.resize(640, 480)
w.exec_()
...