当前位置: 首页 > article >正文

解决了布局问题1和布局问题2,接下来,你的Main函数如果写成下面这样,直接运行,什么也不会显示?

> if __name__=='__main__':
  app = QApplication(sys.argv)
  MainWindow = QMainWindow()
  ui = Ui_MainWindow()
  ui.setupUi(MainWindow)
  MainWindow.show()
  app.exec()

什么也不会显示

如果你不想修改main中的内容,必须在class Ui_MainWindow(QWidget) 类中添加一个初始化方法就可以了:

def __init__(self):
     super().__init__()
     self.setupUi(MainWindow)

完整代码如下:

import sys
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication,QMainWindow,QWidget


class Ui_MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setupUi(MainWindow)

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.verticalLayoutWidget.setGeometry(QtCore.QRect(230, 130, 160, 112))
        self.verticalLayoutWidget.setObjectName("verticalLayoutWidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.pushButton = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.pushButton.setObjectName("pushButton")
        self.verticalLayout.addWidget(self.pushButton)
        self.pushButton_2 = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.verticalLayout.addSpacing(10)
        # 在按钮1 和 按钮2 之间增加距离10
        self.verticalLayout.addSpacing(10)
        self.verticalLayout.addWidget(self.pushButton_2)
        self.pushButton_3 = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.verticalLayout.addWidget(self.pushButton_3)
        self.pushButton_4 = QtWidgets.QPushButton(self.verticalLayoutWidget)
        self.pushButton_4.setObjectName("pushButton_4")
        self.verticalLayout.addWidget(self.pushButton_4)
        self.setLayout(self.verticalLayout)

        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")

        MainWindow.setStatusBar(self.statusbar)
        # 设置垂直布局间距为10
        self.verticalLayout.setSpacing(10)
        self.setLayout(self.verticalLayout)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "1"))
        self.pushButton_2.setText(_translate("MainWindow", "2"))
        self.pushButton_3.setText(_translate("MainWindow", "3"))
        self.pushButton_4.setText(_translate("MainWindow", "4"))

if __name__=='__main__':
  app = QApplication(sys.argv)
  MainWindow = QMainWindow()
  ui = Ui_MainWindow()
  ui.setupUi(MainWindow)
  MainWindow.show()
  app.exec()


以上代码运行的效果如下:
在这里插入图片描述


http://www.kler.cn/a/153968.html

相关文章:

  • java设计模式学习之【建造者模式】
  • TCP网络常见名词
  • 本地navicate连接不上远程mysql主机
  • 基于若依的ruoyi-nbcio流程管理系统增加流程节点配置(三)
  • 【Java Web学习笔记】 2 - CSS入门
  • vue 根据动态生成的form表单的整体的数据回显,赋值及校验和提交
  • 通过转速计算物体的转动弧度(梯形积分法简单应用)
  • 【数据中台】开源项目(3)-DataSphere Studio
  • CentOS 部署 WBO 在线协作白板
  • MySQL 表分区原理详解
  • 自定义类型:结构体、联合、枚举
  • 安科瑞ASCP200系列 DS 型电气防火限流式保护器 充电桩配套用限流式保护 -安科瑞 蒋静
  • TPC通信-BS架构
  • c++ day 4
  • Unity中Shader指令优化(编译后指令解析)
  • J-LINK J-FLASH 下载STM32单片机程序使用教程
  • C++-火车编组
  • docker-compose脚本编写关键词详解
  • LeetCode | 100. 相同的树
  • SALib敏感性分析入门实践笔记