【Hello,PyQt】最简单的一些pyqt5程序

pyqt5中的常用模块

模块 描述
QtWidgets 提供了一系列的 UI 组件,如按钮、文本框、窗口等。
QtGui 包含了绘图、颜色、字体等图形相关的功能。
QtCore 提供了核心的非图形功能,如事件处理、定时器等。
QtNetwork 用于网络编程,支持TCP、UDP等协议。
QtSql 提供了数据库访问功能,支持多种数据库。
QtMultimedia 处理多媒体相关的功能,如音频、视频。
QtPrintSupport 提供打印支持的模块。
QtWebEngine 用于集成 Web 内容到应用程序中。
QtXml 处理 XML 数据的模块。
QtSvg 用于处理 SVG 图形的模块。
QtWebSockets 提供了 WebSocket 支持。
QtTest 用于编写单元测试的模块。
QtDesigner 用于创建和编辑 Qt 界面的可视化工具。

第一个窗口

python 复制代码
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QWidget

class FirstMainWin(QMainWindow):
    def __init__(self):
        super(FirstMainWin,self).__init__()
        #设置窗口尺寸
        self.resize(300,300)
        #设置窗口标题
        self.setWindowTitle("第一个pyqt窗口")
if __name__=="__main__":
    app=QApplication(sys.argv)
    firstWin=FirstMainWin()
    firstWin.show()
    sys.exit(app.exec_())
  • 程序预览

QMainWindow用于创建主窗口,QApplication管理应用程序的控制流,而QWidget是所有用户界面对象的基类。

每个 PyQt5 应用都必须创建一个应用对象,即QApplication类的实例,这是任何PyQt5应用程序的起点。firstWin是实例化了的FirstMainWin类,并通过show()方法显示了主窗口。最后,通过sys.exit(app.exec_())进入应用程序的主事件循环,确保在用户关闭窗口时应用程序能够干净地退出。

窗口居中

python 复制代码
mport sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QDesktopWidget
class CenterWindow(QMainWindow):
    def __init__(self):
        super(CenterWindow, self).__init__()
        # 设置窗口尺寸
        self.resize(300, 300)
        # 设置窗口标题
        self.setWindowTitle("窗口居中")
    # 窗口居中
    def center(self):
        # 获取屏幕坐标
        screen = QDesktopWidget().screenGeometry()
        # 获取窗口坐标
        size = self.geometry()
        newLeft = (screen.width() - size.width()) / 2
        newTop = (screen.height() - size.height()) / 2
        self.move(newLeft, newTop)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    firstWin = CenterWindow()
    firstWin.show()
    firstWin.center()

    sys.exit(app.exec_())

关闭窗口

关闭一个窗口最直接的方式就是点击标题栏的那个叉,这个例子展示的是通过点击一个按钮关闭窗口,这会提前接触到一下信号和槽的知识。

python 复制代码
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QDesktopWidget
from PyQt5.QtWidgets import QPushButton

class CloseWindow(QMainWindow):
    def __init__(self):
        super(CloseWindow, self).__init__()
        # 设置窗口尺寸
        self.resize(300, 300)
        # 添加button
        self.button = QPushButton("退出应用程序",self)
        # 关联信号和槽
        self.button.clicked.connect(self.onClick_Button)

    def onClick_Button(self):
        sender = self.sender()
        print(sender.text() + "按钮按下")
        app = QApplication.instance()
        app.quit()


if __name__ == "__main__":
    app = QApplication(sys.argv)

    Win = CloseWindow()
    Win.show()

    sys.exit(app.exec_())
  • 程序预览

创建按钮使用了QPushButton(string text, QWidget parent = None)函数,第一个参数text是按钮上显示的文字,第二个参数指明按钮放在那个组件上
self.button.clicked.connect(self.onClick_Button) 这一行代码建立了一个信号(Signal)和槽(Slot)的连接。在PyQt中,信号和槽是用于处理事件和响应的机制。

简单介绍一下信号和槽

  • 信号(Signal): 是一个对象发出的事件,比如按钮被点击、文本框内容改变等。在这里,clicked 是QPushButton类的一个信号,按钮被点击时发出。
  • 槽(Slot): 是一个接收信号的方法,用于处理信号触发的事件。在这里,self.onClick_Button 是一个槽,是在按钮被点击发出clicked信号后要执行的方法。

通过使用 connect 方法,告诉 程序当按钮的 clicked 信号被触发时,调用 self.onClick_Button方法。
onClick_Button 方法被调用时,它获取了发出信号的对象(通过self.sender()获取),打印出按钮的文本,并通过 QApplication.instance().quit() 退出应用程序。QApplication.instance()

是 PyQt 中的一个静态方法,它返回当前运行的应用程序的唯一实例序。

消息盒子

QMessageBox 通常用于向用户提供一些信息、询问确认或警告等。它是基于 QDialog 类的一种简便的实现,提供了几种预定义的对话框类型。使用时要从PyQt5.QtWidgets中导入QMessageBox模块

下面是一些常见的 QMessageBox

  • 信息框 (Information Box):
python 复制代码
# 显示信息框
QMessageBox.information(None, '标题', '这是一条信息')
  • 警告框 (Warning Box):
python 复制代码
# 显示警告框
QMessageBox.warning(None, '标题', '这是一条警告')
  • 错误框 (Error Box):
python 复制代码
# 显示错误框
QMessageBox.critical(None, '标题', '发生了错误')
  • 提问框 (Question Box):
python 复制代码
# 显示提问框
result = QMessageBox.question(None, '标题', '确定要执行吗?', QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
if result == QMessageBox.Yes:
    print('用户选择了确定')
else:
    print('用户选择了取消')
python 复制代码
import sys
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication

class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('消息盒子')
        self.show()

    def closeEvent(self, event):
        reply = QMessageBox.question(self, 'Message',
            "确定要退出吗?", QMessageBox.Yes |
            QMessageBox.No, QMessageBox.No)

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()

if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
  • 程序预览

创建提示框

创建提示框需要导入QToolTip和QFont模块

QToolTip 用于显示工具提示信息,提供用户鼠标悬停在组件上时的额外信息,通过使用setToolTip即可为组件设置提示信息,这里导入QFont模块是为了给提示框中的文字设置字体。

python 复制代码
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget,  QPushButton, QToolTip
from PyQt5.QtGui import QFont


class TooltipWin(QMainWindow):
    def __init__(self):
        super(TooltipWin, self).__init__()
        self.initUI()

    def initUI(self):
        QToolTip.setFont(QFont('楷体', 12))
        self.setToolTip('我是一个窗口')
        # 设置窗口位置和尺寸
        self.setGeometry(300, 300, 640, 480)
        # 设置窗口标题
        self.setWindowTitle("ToolTip")
        self.btn=QPushButton('button',self)
        self.btn.setToolTip('我是一个按钮')
        


if __name__ == "__main__":
    app = QApplication(sys.argv)
    firstWin = TooltipWin()
    firstWin.show()
    
    sys.exit(app.exec_())
  • 程序预览

相关推荐
努力的lpp10 小时前
php反序列化一(大白话版)
开发语言·web安全·php·ctf·反序列化
菜鸟~noob23310 小时前
【电子战】第03篇:CFAR(恒虚警)处理【含matlab代码】
开发语言·matlab
泡海椒11 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
hqyjzsb11 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
sanjiaomao33312 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
Keven_1112 小时前
算法札记:ACM适用的很骚的C++语法(持续更新)
开发语言·c++
mengzhi啊12 小时前
QPluginLoader 动态 DLL 插件版,支持插件之间通信,广播。请求和应答
c++·qt
脉动数据行情112 小时前
C# 实现德指 DAX 期货 WebSocket 实时行情监听
开发语言·websocket·c#
大圣编蚕13 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
菜鸟~noob23313 小时前
【电子战】第02篇:能量检测器 vs. 相关检测器【含matlab代码】
开发语言·matlab