从零开始,在pycharm中使用pyqt5和pyqt5-tools和QT Designer设计界面,不用敲代码

从零开始,在pycharm中使用pyqt5和pyqt5-tools和QT Designer设计界面,不用敲代码

结果功能展示:
在这里插入图片描述
根据设计界面自动生成的python代码:

from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1101, 845)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(280, 40, 201, 41))
        self.textBrowser.setObjectName("textBrowser")
        self.widget = QtWidgets.QWidget(self.centralwidget)
        self.widget.setGeometry(QtCore.QRect(50, 110, 271, 255))
        self.widget.setObjectName("widget")
        self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.widget)
        self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.verticalLayout = QtWidgets.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.label = QtWidgets.QLabel(self.widget)
        self.label.setObjectName("label")
        self.verticalLayout.addWidget(self.label)
        self.textBrowser_2 = QtWidgets.QTextBrowser(self.widget)
        self.textBrowser_2.setObjectName("textBrowser_2")
        self.verticalLayout.addWidget(self.textBrowser_2)
        self.verticalLayout_3.addLayout(self.verticalLayout)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.pushButton = QtWidgets.QPushButton(self.widget)
        self.pushButton.setObjectName("pushButton")
        self.horizontalLayout.addWidget(self.pushButton)
        self.pushButton_2 = QtWidgets.QPushButton(self.widget)
        self.pushButton_2.setObjectName("pushButton_2")
        self.horizontalLayout.addWidget(self.pushButton_2)
        self.verticalLayout_3.addLayout(self.horizontalLayout)
        self.widget1 = QtWidgets.QWidget(self.centralwidget)
        self.widget1.setGeometry(QtCore.QRect(430, 110, 281, 255))
        self.widget1.setObjectName("widget1")
        self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.widget1)
        self.verticalLayout_4.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout_4.setObjectName("verticalLayout_4")
        self.verticalLayout_2 = QtWidgets.QVBoxLayout()
        self.verticalLayout_2.setObjectName("verticalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.widget1)
        self.label_2.setObjectName("label_2")
        self.verticalLayout_2.addWidget(self.label_2)
        self.textBrowser_3 = QtWidgets.QTextBrowser(self.widget1)
        self.textBrowser_3.setObjectName("textBrowser_3")
        self.verticalLayout_2.addWidget(self.textBrowser_3)
        self.verticalLayout_4.addLayout(self.verticalLayout_2)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.pushButton_4 = QtWidgets.QPushButton(self.widget1)
        self.pushButton_4.setObjectName("pushButton_4")
        self.horizontalLayout_2.addWidget(self.pushButton_4)
        self.pushButton_3 = QtWidgets.QPushButton(self.widget1)
        self.pushButton_3.setObjectName("pushButton_3")
        self.horizontalLayout_2.addWidget(self.pushButton_3)
        self.verticalLayout_4.addLayout(self.horizontalLayout_2)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 1101, 26))
        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.textBrowser.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:16pt; font-weight:600; color:#550000;\"> 徐州还是美的</span></p></body></html>"))
        self.label.setText(_translate("MainWindow", "       你喜欢徐州的什么?"))
        self.textBrowser_2.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:14pt; font-weight:600;\">1、美食</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:14pt; font-weight:600;\">2、文化</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:14pt; font-weight:600;\">3、风景 </span></p></body></html>"))
        self.pushButton.setText(_translate("MainWindow", "添加"))
        self.pushButton_2.setText(_translate("MainWindow", "删除"))
        self.label_2.setText(_translate("MainWindow", "       你不喜欢徐州的什么?"))
        self.textBrowser_3.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'SimSun\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:14pt; font-weight:600;\">1、没有不好吃的美食</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:14pt; font-weight:600;\">2、没有不好玩的乐场</span></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><span style=\" font-size:14pt; font-weight:600;\">3、没有让人无故的悲伤</span></p></body></html>"))
        self.pushButton_4.setText(_translate("MainWindow", "添加"))
        self.pushButton_3.setText(_translate("MainWindow", "删除"))

开始学习

安装Python和Pycharm

(随便在b站上找的,有效的)安装教程:https://www.bilibili.com/video/BV1DP4y1a7Dx?from=search&seid=14040803623033956043&spm_id_from=333.337.0.0

创建工程并安装pyqt5和pyqt5-tools的包

在Pycharm中新建一个项目,然后打开Terminal终端,输入以下代码安装:
安装pyqt5:pip install pyqt5
安装pyqt5-tools:pip install pyqt5-tools
如果报错且提示中有time out之类的应该就是网络原因,可以重新输入代码安装(多试几次),实在不行可以更换网络试试。
安装完之后可以到File->Settings->Project->Project Interpreter中查看
在这里插入图片描述
如果你的Python Interpreter位置显示的是 < No Interpreter>,如下图,可以在右边添加解释器。解释器的位置就选择当前工程目录下 …/venv/Scripts/python.exe
在这里插入图片描述
设置好之后就能够看到当前环境下所有安装的包了。

设置External Tools以便之后可以使用QT Designer

进入File->Settings->Tools->External Tools
在这里插入图片描述
第一次进入时,右边的显示栏中啥也没有,点击Tools下面的加号进行添加。

添加QT Designer

Name:输入最后工具在菜单中的想呈现名称,比如我这里命名为QTDesigner
Program:designer.exe程序的位置,位于当前所用解析器的...\venv\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
Working directory:designer.exe工作路径,设置为$ProjectFileDir$
在这里插入图片描述
如果有的同学找不到designer.exe的位置,可以参考下面的文章解决问题:
安装pyqt5后没有designer.exe

类似地添加PyUIC,

name:PyUIC
Program:PyUIC位于当前解析器的Scripts\pyuic5.exe
Arguments:$FileName$ -o $FileNameWithoutExtension$.py
Working dirctory:$ProjectFileDir$
在这里插入图片描述
QtDesignerArguments可不填,因为在保存的时候已经指定名字和路径了,不需要参数了。但是PyUICArguments一定要填,因为 .ui文件生成 .py文件需要参数,要告诉pyuic5.exe生成文件名的规则。
设置好后如下如:
在这里插入图片描述

打开并使用QT Designer

找到并点击QTDesigner
在这里插入图片描述
关于QT Designer的使用大家可以参考以下教学视频:
【简单易懂GUI教程】使用pyqt5+QtDesigner快速制作多功能GUI并打包成exe
编辑好自己设计的界面后按Ctrl+s保存,保存的目录就放在当前的工程下面,我将文件的名字命名为a.ui`,之后回到Pycharm中右键点击刚保存的a.ui 文件,点击PyUIC
在这里插入图片描述
之后会生成一个与 .ui文件同名的 .py文件。如果这时运行这个 .py文件啥也不会发生,因为代码中只定义了函数,没有调用这些函数,所以需要在之后新建一个python脚本,在里面放入下面的代码:

import sys
from PyQt5.QtWidgets import QMainWindow
from PyQt5.QtWidgets import QApplication
import a

if __name__ == '__main__':
  app = QApplication(sys.argv)
  mainW = QMainWindow()
  ui = a.Ui_MainWindow()
  ui.setupUi(mainW)

  mainW.show()
  sys.exit(app.exec_())

注意:需要将 import aui = a.Ui_MainWindow()中的a替换成你自己生成的 .py文件的名字,且放在同一目录下。然后执行该文件,就可以看到自己设计的窗口界面了。
在这里插入图片描述
参考链接:

  1. Pycharm安装PyQt5和pyqt5-tools从而使用Qt Designer
  2. 【简单易懂GUI教程】使用pyqt5+QtDesigner快速制作多功能GUI并打包成exe
  3. Error: one input ui-file must be specified
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值