pycharm qt designer_pycharm怎么运行py文件

pycharm qt designer_pycharm怎么运行py文件pycharm集成QTdesigner+ui转py工具前言一、前期安装二、pycharm配置QTdesigner1.外部工具配置2.pycharm可直接调用designer三、pycharm配置pyuic(将ui文件转换为py文件)1.外部工具配置2.pycharm可直接调用pyuic工具四、显示代码和逻辑代码分离1.使用designer设计示意界面总结前言后面使用PyQt5开始设计界面、使用pycharm这个IDE进行逻辑代码和界面代码的融合。一、前期安装前提:按照《PythonGUI.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺


前言


后面使用PyQt5开始设计界面、使用pycharm这个IDE进行逻辑代码和界面代码的融合。

一、前期安装

前提:按照《Python GUI设计PyQt5从入门到实践》此书已经将python、pyqt5-tools、pyqt5designer安装完毕,安装方式为pip命令行方式。
安装完成后如下图所示:
在这里插入图片描述

二、pycharm配置 QTdesigner

1.外部工具配置

在这里插入图片描述

2.pycharm可直接调用designer

功在这里插入图片描述

在这里插入图片描述

三、pycharm配置 pyuic(将ui文件转换为py文件)

1.外部工具配置

在这里插入图片描述

2.pycharm可直接调用pyuic工具

选用.ui文件就可以使用工具生成对应的py文件。
在这里插入图片描述

四、显示代码和逻辑代码分离

1.使用designer设计示意界面

在这里插入图片描述
1.保存为button_test1.ui
2.使用工具pyuic将button_test1.ui转换为button_test1.py
其结果如下:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
        self.horizontalLayoutWidget.setGeometry(QtCore.QRect(100, 130, 421, 80))
        self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
        self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton_4 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_4.setObjectName("pushButton_4")
        self.horizontalLayout.addWidget(self.pushButton_4)
        self.pushButton_5 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_5.setObjectName("pushButton_5")
        self.horizontalLayout.addWidget(self.pushButton_5)
        self.pushButton_3 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout.addWidget(self.pushButton_3)
        self.pushButton_2 = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.pushButton = QtWidgets.QPushButton(self.horizontalLayoutWidget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        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)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_4.setText(_translate("MainWindow", "PushButton"))
        self.pushButton_5.setText(_translate("MainWindow", "PushButton"))
        self.pushButton_3.setText(_translate("MainWindow", "BUTTON1"))
        self.pushButton_2.setText(_translate("MainWindow", "BUTTON2"))
        self.pushButton.setText(_translate("MainWindow", "BUTTON3"))

3.新建pyqt5_test1.py 将button_test1.py当成类来引用。

import sys
import button_test1
from PyQt5.QtWidgets import QApplication, QMainWindow

if __name__ == '__main__':
    # 创建QApplication类的实例
    app = QApplication(sys.argv)
    # 创建一个主窗口
    mainWindow = QMainWindow()
    # 创建Ui_MainWindow的实例
    ui = button_test1.Ui_MainWindow()
    # 调用setupUi在指定窗口(主窗口)中添加控件
    ui.setupUi(mainWindow)
    # 显示窗口
    mainWindow.show()
    # 进入程序的主循环,并通过exit函数确保主循环安全结束
    sys.exit(app.exec_())

运行此程序,结果如下图所示:
在这里插入图片描述

2.将界面与逻辑分离

1.继承界面文件的主窗口类即可

import sys
import button_test1  #导入模块,不然本文件不认识,无法调用
from button_test1 import *  #导入模块里面的类
from PyQt5.QtWidgets import QApplication, QMainWindow

class MyMainWindow(QMainWindow,Ui_MainWindow):#类的参数没看明白
    def __init__(self,parent=None):
        super(MyMainWindow,self).__init__(parent)
        self.setupUi(self)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    my_window = MyMainWindow()
    my_window.show()
    sys.exit(app.exec_())

总结

以后开发环境只用打开pycharm就可以了,pycharm中可以打开designer界面来进行界面设计,
pycharm中也可以使用pyUIC来将ui文件转换为py文件,
最后将界面与逻辑代码隔离,界面的修改不会影响逻辑代码,完美。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/174372.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【OpenCV入门教程之九】 非线性滤波专场:中值滤波、双边滤波[通俗易懂]

    正如我们上一篇文章中讲到的,线性滤波可以实现很多种不同的图像变换。然而非线性滤波,如中值滤波器和双边滤波器,有时可以达到更好的实现效果。邻域算子的其他一些例子还有对二值图像进行操作的形态学算子,用于计算距离变换和寻找连通量的半全局算子。先上一张截图:一、理论与概念讲解——从现象到本质1.1非线性滤波概述之前的那篇文章里,我们所考虑的滤波器都是线性的,即两个信号之和的响应和他们各自响应之和相等。换句话说,每个像素的输出值是一些输入像素的加权和,线性滤波器易于构造,并且易于从频率响应角度来进行分

    2022年4月9日
    52
  • label 的autosize属性

    label 的autosize属性label的autosize属性,显示不全的问题。转载于:https://www.cnblogs.com/sfbrzkh/p/4487911.html

    2022年5月20日
    29
  • UCOSII系统时间管理[通俗易懂]

    UCOSII系统时间管理[通俗易懂]一,UCOSII的定时中断绝大多数的内核要求提供定时中断,以实现延时与超时控制等功能。这个定时中断叫做时钟节拍。时钟的中断子程序ISR和时钟节拍函数OSTimeTick()该函数通知UCOSII,发生了时钟节拍中断。二,UCOSII系统时钟函数1,任务延时函数,OSTimeDly(INT16Uticks)实现申请该服务的任务可以延时一段时间这个系统服务的函数叫做OSTimeDly(),这段时间的长短是用时钟节拍的数目来确定的。调用该函数会使µC/OS-Ⅱ进行一次任务调度,并且执行下一个优

    2022年5月4日
    112
  • (怪盗基德的滑翔翼)(最长上升子序列)[通俗易懂]

    (怪盗基德的滑翔翼)(最长上升子序列)[通俗易懂]原题链接怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。不得已,怪盗基德只能操作受损的滑翔翼逃脱。假设城市中一共有N幢建筑排成一条线,每幢建筑的高度各不相同。初始时,怪盗基德可以在任何一幢建筑的顶端。他可以选择一个方向逃跑,但是不能中途改变方向

    2022年8月8日
    7
  • 下拉框、下拉控件之Select2

    下拉框、下拉控件之Select2

    2021年11月9日
    78
  • 乾颐堂军哥HCIE8-BGP工作原理以及更新机制(含下一跳解析)[通俗易懂]

    乾颐堂军哥HCIE8-BGP工作原理以及更新机制(含下一跳解析)

    2022年3月12日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号