01、本系列使用pyqt5作为教材创建项目
--安装 pyqt5 和 pyqt5-tools[这个就是为了使用qtdesigner这个工具] 两个包
--进入Lib\site-packages\pyqt5_tools\Qt\bin,点击designer.exe即可打开
02、第一个示例:
import sys
from PyQt5 import QtWidgets # 通用窗口类
class mywindows(QtWidgets.QWidget): # 继承自 QtWidgets.QWidget 类
def __init__(self):
super(mywindows, self).__init__() # 重载一下mywindows使其包含了QtWidgets.QWidget的预加载项
def mywindow():
app = QtWidgets.QApplication(sys.argv) # pyqt 窗口必须在 QApplication 方法中使用
windows = mywindows() # 创建一个对象
windows.show() # 展示窗口
sys.exit(app.exec_()) # 启动事件循环
if __name__ == '__main__':
mywindow()
03、qtdesigner使用基础--01、Layout窗口布局控件
--点击designer.exe打开软件,Layout拖动到主窗口就是红色框
--Widget就是通用窗口类,MainWindows就是主窗口,Widget被分离出来用于替代Dialog,在qt5中Widget放在QtWidget模块库中,在qt4中是在QtGUI
--MainWindows默认添加了菜单栏、工具栏、状态栏
--Vertical Layout:竖向 | 纵向布局
--Horizontal Layout:横向布局
--Grid Layout:栅格布局 示例:计算器布局
--Form Layout:窗体布局中布局
--一般组件是分层级的,Form窗体--Layout组件--button按钮
--是用自带的pyuic5 工具cmd中运行命令:pyuic5 -o uitest.py test.ui
04、 qtdesigner使用基础--02、基本源码生成分析
01、单纯创建一个Widget窗体代码如下:pyuic5 -o uitest.py test.ui
from PyQt5 import QtCore, QtGui, QtWidgets # 导入模块
class Ui_Form(object): # 继承object类,创建窗体类
def setupUi(self, Form): # 创建setupUi函数
Form.setObjectName("Form") # 设置窗体名称
Form.resize(400, 297) # 设置窗体大小
self.retranslateUi(Form) # 加载retranslateUi函数
QtCore.QMetaObject.connectSlotsByName(Form) # 关联信号槽
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate # 支持国际化
Form.setWindowTitle(_translate("Form", "Form")) # 设置窗口标题
02、 加一个栅格布局之后
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(672, 468)
self.gridLayoutWidget = QtWidgets.QWidget(Form) # 创建栅格布局,放进窗体Form,最主要
self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 20, 671, 451)) # 设置栅格布局大小
self.gridLayoutWidget.setObjectName("gridLayoutWidget") # 设置栅格布局的名称
self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget) # 创建一个栅格布局对象,最主要
self.gridLayout.setContentsMargins(0, 0, 0, 0) # 设置栅格布局边距
self.gridLayout.setObjectName("gridLayout") # 设置栅格布局OjbjectName
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
03、关于qtdesigner的使用小技巧
--布局查看,可使用Object Inspector[对象查看器]进行查看,通常使用栅格布局作为顶层布局
--通常可以使用ctrl选择拖动的所有控件,再选择工具栏上的布局即可自动布局
04、github小技巧
--通过按住ctrl可以多行选择,选择对象包括光标、空格、文字等