PyQt5 mainwindow中心布局嵌套应用

在pyqt5中,mainwindow有属于自己的布局,我们无法使用setlayout直接对mainwindow进行直接布局,但是我们可以将一个布局好的widget放置在mianwindow中的布局里,从而达到用setlayout布局widget后在布局到mianwindow中, 本实例采用QFormLayout+QVBoxLayout+QGridLayout将label,lineEdit和textEdit布局到一个widget中,最后将widget布局到mainwindow的中心布局里,本文还添加了一个菜单栏,在linux出现了一小段插曲,没有加入setNativeMenuBar(False)这个方法时,linux下是不会显示出菜单栏,添加之后就全平台都能显示

import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import *


class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        # 窗体设置
        self.setWindowTitle("关闭窗口")
        # 菜单动作
        self.exitAct = QAction(QIcon('exit.png'), '&Exit', self)
        self.exitAct.setShortcut('Ctrl+Q')
        self.exitAct.setStatusTip("Exit application")
        self.exitAct.triggered.connect(self.quitAction)
        # 菜单栏
        self.menu = self.menuBar()
        self.menu.setNativeMenuBar(False)
        self.fileMenu = self.menu.addMenu('File')
        self.fileMenu.addAction(self.exitAct)
        # 中心窗口嵌入widget布局
        self.label1 = QLabel('label1')
        self.label2 = QLabel('label2')
        self.lineEdit1 = QLineEdit()
        self.lineEdit2 = QLineEdit()
        self.textEdit1 = QTextEdit()
        self.textEdit2 = QTextEdit()
        self.formlayout1 = QFormLayout()
        self.formlayout2 = QFormLayout()
        self.formlayout1.addRow(self.label1, self.lineEdit1)
        self.formlayout2.addRow(self.label2, self.lineEdit2)
        self.vbox1 = QVBoxLayout()
        self.vbox1.addLayout(self.formlayout1)
        self.vbox1.addWidget(self.textEdit1)
        self.vbox2 = QVBoxLayout()
        self.vbox2.addLayout(self.formlayout2)
        self.vbox2.addWidget(self.textEdit2)
        self.gridlayout = QGridLayout()
        self.gridlayout.addItem(self.vbox1, 0, 0)
        self.gridlayout.addItem(self.vbox2, 0, 1)
        self.widGet = QWidget()
        self.widGet.setLayout(self.gridlayout)
        self.setCentralWidget(self.widGet)
        self.center()

    # 窗口居中
    def center(self):
        self.size = QDesktopWidget().screenGeometry()
        self.resize = self.geometry()
        self.move((self.size.width() - self.resize.width()) / 2, (self.size.height() - self.resize.height()) / 2)

    def quitAction(self):
        QApplication.exit()
if __name__ == "__main__":
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    sys.exit(app.exec_())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值