PyQT5当我们点击一​​个对象到菜单栏时我们要打开一个新窗口

时间:2018-04-15 22:29:42

标签: python pyqt5 qmenubar

两天前,我开始学习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_())

下一步是当我们将对象单击到菜单栏时(例如&#34; Hata&#34;),我们要打开一个新窗口。我们坚持这一步......在这种情况下,有什么想法可以帮助我们吗?

1 个答案:

答案 0 :(得分:0)

你必须学习的第一件事是在PyQt中你应该尝试异步地做所有事情,因为你必须使用信号,这些信号在事件发生时发出,在你的特定情况下每次按下{{1}发出触发信号时,必须将此信号连接到事件发生时要调用的某个函数,在PyQt中该函数称为Slot。在那个Slot中你必须完成你想要的任务,在这种情况下我会显示QAction

QDialog