(一)PyQt5系列教程:使用PyQt5创建一个简单的demo
一、环境配置:
1. python下载(建议python3.8版本以上)和安装
2. pycharm下载和安装
3. PyQr5下载和安装
4. 在pycharm中添加对应的PyQt5的包
5.设置PyQt5的设计器,将PyQt5文件转换成python:
复制designer.exe的路径:
然后打开setting,配置外部工具:(可以在pycharm直接调用软件外的工具)
Program:是刚才复制的路径;
Arguement填如下面参数:
-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
然后回到pycharm,打开外部工具Qt designer:
调用了Pycharm外部的Qt designer。然后创建一个空工程文件,保存。保存的过程文件会在pycharm中出现
点击窗口的中的部件,右边有相对应的属性可以进行设置:
对pycharm中的Qt designer创建并保存的.ui工程文件中进行转换成python文件:
完整代码:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(400, 300)
self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
self.buttonBox.setObjectName("buttonBox")
self.retranslateUi(Dialog)
self.buttonBox.accepted.connect(Dialog.accept)
self.buttonBox.rejected.connect(Dialog.reject)
QtCore.QMetaObject.connectSlotsByName(Dialog)
def retranslateUi(self, Dialog):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
if __name__ == '__main__':
# QT提供的默认基类QMainWindow、QWidget、QDialog这三种。
# QMainWindow是带有菜单栏和工具栏的主窗口
# QtWidgets是PyQt5下面的一个模块,包括了用于构建界面的一系列UI元数组件
# QApplication包括窗口系统和其他来源处理过和发送过的主事件循环,有且只有一个QApplication对象
# QDialog是各种对话框的基类,窗口部件全部继承自QWidget。(本身没有菜单栏和工具栏)
app = QtWidgets.QApplication(sys.argv) # 实例化一个应用对象
MainWindow = QtWidgets.QDialog()
ui = Ui_Dialog()
ui.setupUi(MainWindow) # 初始化窗口:吧Qt设计器设计的内容画出来,定义的信号和槽建立起来。(画界面和写程序的桥梁)
MainWindow.setWindowTitle("666") # 标题
MainWindow.show() # 显示窗口
sys.exit(app.exec_()) # 程序循环,等待安全退出
点击运行:
如果在Qt Designer创建Main Window:
则代码部分为:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file '03.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1025, 820)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("C:/Users/hdy/Pictures/logo.ico.bmp"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(200, 240, 274, 30))
self.widget.setObjectName("widget")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.widget)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.lineEdit = QtWidgets.QLineEdit(self.widget)
self.lineEdit.setObjectName("lineEdit")
self.horizontalLayout.addWidget(self.lineEdit)
self.horizontalLayout_2.addLayout(self.horizontalLayout)
self.Button = QtWidgets.QPushButton(self.widget)
self.Button.setObjectName("Button")
self.horizontalLayout_2.addWidget(self.Button)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1025, 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.Button.setText(_translate("MainWindow", "Button"))
if __name__ == '__main__':
# QT提供的默认基类QMainWindow、QWidget、QDialog这三种。
# QMainWindow是带有菜单栏和工具栏的主窗口
# QtWidgets是PyQt5下面的一个模块,包括了用于构建界面的一系列UI元数组件
# QApplication包括窗口系统和其他来源处理过和发送过的主事件循环,有且只有一个QApplication对象
# QDialog是各种对话框的基类,窗口部件全部继承自QWidget。(本身没有菜单栏和工具栏)
app = QtWidgets.QApplication(sys.argv) # 实例化一个应用对象
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow) # 初始化窗口:吧Qt设计器设计的内容画出来,定义的信号和槽建立起来。(画界面和写程序的桥梁)
MainWindow.setWindowTitle("666") # 标题
MainWindow.show() # 显示窗口
sys.exit(app.exec_()) # 程序循环,等待安全退出