0 介绍PyQT5
1 把Qt Designer继承到pyCharm $ProjectFileDirs $
-m PyQt5.uic.pyuic$FileName $ -o$FileNameWithoutExtension $.py$FileDir $
2 PyQT5的创建过程
from PyQt5. QtWidgetsimport QApplication, QWidget, QMainWindow, QDialog, QLabel, QPushButtonimport sys""" ### 1. `QApplication` - **类型**:应用程序核心类(非界面组件) - **作用**:管理整个PyQt应用的生命周期、事件循环、系统资源(如字体、剪贴板),是所有PyQt程序的**入口基础**。 - **特点**:一个程序只能有一个`QApplication`实例,必须在界面组件创建前初始化。 ### 2. `QWidget` - **类型**:所有可视化组件的**基类** - **作用**:是按钮、标签、窗口等组件的“父类模板”,自身也可作为独立窗口(如你之前代码中的空白窗口)。 - **特点**:支持设置大小、位置、样式,可承载其他子组件,是界面布局的基础容器。 ### 3. `QMainWindow` - **类型**:主窗口类(继承自`QWidget`) - **作用**:用于创建带**菜单栏、工具栏、状态栏**的标准应用主窗口(如软件的主界面)。 - **特点**:内置了布局框架,可通过`setCentralWidget()`设置窗口的核心内容区域。 ### 4. `QDialog` - **类型**:对话框类(继承自`QWidget`) - **作用**:用于创建**临时交互窗口**(如弹窗、登录框、确认提示框),通常是模态/非模态的“临时窗口”。 - **特点**:默认没有菜单栏/工具栏,关闭后会销毁(或隐藏),常用于短流程交互。 ### 5. `QLabel` - **类型**:标签组件 - **作用**:显示**文本、图片、超链接**等静态内容,不可交互(仅用于展示信息)。 - **特点**:支持设置字体、颜色、对齐方式,可结合`QMovie`显示动态GIF。 ### 6. `QPushButton` - **类型**:按钮组件 - **作用**:创建可点击的按钮,触发**点击事件**(如“确定”“提交”按钮)。 - **特点**:支持显示文本/图标,可设置点击状态(禁用、选中),通过`clicked.connect()`绑定触发的函数。 """ class MyWindow ( QWidget) : def __init__ ( self) : super ( ) . __init__( ) # 设置窗口大小 self. resize( 400 , 300 ) # 设置窗口位置 self. move( 600 , 300 ) # 设置标题 self. setWindowTitle( '这是一个PyQT窗口' ) # 创建标签控件 self. label= QLabel( self) self. label. setText( '测试标签' ) self. label. move( 100 , 200 ) # 创建按钮 self. button= QPushButton( self) self. button. setText( '按钮测试' ) self. button. move( 250 , 200 ) if __name__== '__main__' : app= QApplication( sys. argv) window= MyWindow( ) window. show( ) sys. exit( app. exec_( ) ) 3 信号绑定槽函数
from PyQt5. QtWidgetsimport QApplication, QWidget, QMainWindow, QDialog, QLabel, QPushButtonimport sysclass MyWindow ( QWidget) : def __init__ ( self) : super ( ) . __init__( ) # 设置窗口大小 self. resize( 400 , 300 ) # 设置窗口位置 self. move( 600 , 300 ) # 设置标题 self. setWindowTitle( '这是一个PyQT窗口' ) # 创建标签控件 self. label= QLabel( self) self. label. setText( '测试标签' ) self. label. move( 100 , 200 ) # 创建按钮 self. button= QPushButton( self) self. button. setText( '按钮测试' ) self. button. move( 250 , 200 ) # 绑定槽函数 self. button. clicked. connect( self. btn_click) # 槽函数 def btn_click ( self) : self. label. setText( '点我一下触发' ) if __name__== '__main__' : app= QApplication( sys. argv) window= MyWindow( ) window. show( ) sys. exit( app. exec_( ) ) 3.1 重写鼠标或键盘事件 from PyQt5. QtWidgetsimport QApplication, QWidget, QMainWindow, QDialog, QLabel, QPushButtonimport sysfrom PyQt5. QtCoreimport Qtclass MyWindow ( QWidget) : def __init__ ( self) : super ( ) . __init__( ) # 设置窗口大小 self. resize( 400 , 300 ) # 设置窗口位置 self. move( 600 , 300 ) # 设置标题 self. setWindowTitle( '这是一个PyQT窗口' ) # 创建标签控件 self. label= QLabel( self) self. label. setText( '测试标签' ) self. label. move( 100 , 200 ) # 创建按钮 self. button= QPushButton( self) self. button. setText( '按钮测试' ) self. button. move( 250 , 200 ) # # 绑定槽函数 # self.button.clicked.connect(self.btn_click) def mousePressEvent ( self, event) : """ 重写鼠标事件 :param event: :return: """ if event. button( ) == Qt. LeftButton: self. label. setText( '按了鼠标左键' ) self. label. adjustSize( ) # 自动调整标签大小 elif event. button( ) == Qt. RightButton: self. label. setText( '鼠标右键被按下' ) self. label. adjustSize( ) # 自动调整标签大小 else : self. label. setText( '鼠标未动...' ) def mouseReleaseEvent ( self, event) : """ 改写鼠标释放事件 :param event: :return: """ self. label. setText( '鼠标释放了.......' ) self. label. adjustSize( ) def keyPressEvent ( self, event) : """ 改写键盘事件 :param event: :return: """ self. label. setText( '按了键盘.......' ) self. label. adjustSize( ) def keyReleaseEvent ( self, event) : """ 改写键盘释放事件 :param event: :return: """ self. label. setText( '键盘释放了.......' ) self. label. adjustSize( ) # # 槽函数 # def btn_click(self): # self.label.setText('点我一下触发') if __name__== '__main__' : app= QApplication( sys. argv) window= MyWindow( ) window. show( ) sys. exit( app. exec_( ) )