pyqt使用全局格珊布局无法正常显示问题解决

  • Post author:
  • Post category:其他




pyqt使用全局格珊布局无法正常显示问题解决



使用pyqt中格珊布局可以实现界面最大化和还原自动适应屏幕,但是使用不当会导致界面控件全部在左上角,无法正常显示。

经过反复测试,格珊布局对窗口应用的话,只有和qwidget类兼容,与object、qmainwindow类不兼容,有以下两种调用方式:



直接调用法

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
import sys

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.gridLayout_2 = QtWidgets.QGridLayout(Form)
        self.gridLayout_2.setObjectName("gridLayout_2")
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton_4 = QtWidgets.QPushButton(Form)
        self.pushButton_4.setObjectName("pushButton_4")
        self.gridLayout.addWidget(self.pushButton_4, 0, 0, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(Form)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 0, 1, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(Form)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout.addWidget(self.pushButton_3, 1, 0, 1, 1)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 1, 1, 1, 1)
        self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton_4.setText(_translate("Form", "PushButton"))
        self.pushButton_2.setText(_translate("Form", "PushButton"))
        self.pushButton_3.setText(_translate("Form", "PushButton"))
        self.pushButton.setText(_translate("Form", "PushButton"))
#上部分是pyqt直接转过来的,用以下方式调用
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    # 必须使用QWidget实例化。
    window = QWidget()
    ui = Ui_Form()
    ui.setupUi(window)
    window.show()
    sys.exit(app.exec_())



修改类调用

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
#转换后的py类改为这样
class Ui_mm(QWidget):
    def __init__(self):
        super().__init__()
        self.setupUi(self)
        self.retranslateUi(self)


    def setupUi(self, mm):
        mm.setObjectName("mm")
        mm.resize(400, 300)
        self.gridLayout = QtWidgets.QGridLayout(mm)
        self.gridLayout.setObjectName("gridLayout")
        self.pushButton_4 = QtWidgets.QPushButton(mm)
        self.pushButton_4.setObjectName("pushButton_4")
        self.gridLayout.addWidget(self.pushButton_4, 0, 0, 1, 1)
        self.pushButton_2 = QtWidgets.QPushButton(mm)
        self.pushButton_2.setObjectName("pushButton_2")
        self.gridLayout.addWidget(self.pushButton_2, 0, 1, 1, 1)
        self.pushButton_3 = QtWidgets.QPushButton(mm)
        self.pushButton_3.setObjectName("pushButton_3")
        self.gridLayout.addWidget(self.pushButton_3, 1, 0, 1, 1)
        self.pushButton = QtWidgets.QPushButton(mm)
        self.pushButton.setObjectName("pushButton")
        self.gridLayout.addWidget(self.pushButton, 1, 1, 1, 1)

        self.retranslateUi(mm)
        QtCore.QMetaObject.connectSlotsByName(mm)

    def retranslateUi(self, mm):
        _translate = QtCore.QCoreApplication.translate
        mm.setWindowTitle(_translate("mm", "Form"))
        self.pushButton_4.setText(_translate("mm", "PushButton"))
        self.pushButton_2.setText(_translate("mm", "PushButton"))
        self.pushButton_3.setText(_translate("mm", "PushButton"))
        self.pushButton.setText(_translate("mm", "PushButton"))
#调用做相应修改
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    ui = Ui_mm()
    ui.show()
    sys.exit(app.exec_())

网上看了很久,全局格珊布局显示异常貌似没人遇到,有可能大家习惯就是用qwidget类。



版权声明:本文为CSDNlgx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。