【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_())
  • 程序预览

相关推荐
浪浪山齐天大圣6 分钟前
python数据可视化之Matplotlib(8)-Matplotlib样式系统深度解析:从入门到企业级应用
python·matplotlib·数据可视化
F_D_Z17 分钟前
【PyTorch】单对象分割
人工智能·pytorch·python·深度学习·机器学习
编程自留地19 分钟前
18.4 查看订单
python·django·商城
wanzhong233322 分钟前
学习triton-第1课 向量加法
开发语言·python·高性能计算
浊酒南街24 分钟前
Pytorch基础入门4
人工智能·pytorch·python
三千道应用题34 分钟前
C#语言入门详解(18)传值、输出、引用、数组、具名、可选参数、扩展方法
开发语言·c#
忧郁的蛋~40 分钟前
使用.NET标准库实现多任务并行处理的详细过程
开发语言·c#·.net
dragon_perfect1 小时前
全流程基于Yolov8实现在Label-Studio实现半自动标注,已经把整个流程理清楚,把所有的坑解决。
开发语言·python·yolo·labelstudio
kalvin_y_liu1 小时前
四款主流深度相机在Python/C#开发中的典型案例及技术实现方案
开发语言·python·数码相机
劲镝丶1 小时前
malloc概述
c语言·开发语言·c++