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 版权协议,转载请附上原文出处链接和本声明。