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

相关推荐
敲敲敲-敲代码5 分钟前
游戏设计:推箱子【easyx图形界面/c语言】
c语言·开发语言·游戏
明月清风徐徐12 分钟前
Scrapy爬取豆瓣电影Top250排行榜
python·selenium·scrapy
theLuckyLong14 分钟前
SpringBoot后端解决跨域问题
spring boot·后端·python
ROC_bird..14 分钟前
STL - vector的使用和模拟实现
开发语言·c++
Yongqiang Cheng16 分钟前
Python operator.itemgetter(item) and operator.itemgetter(*items)
python·operator·itemgetter
MavenTalk20 分钟前
Move开发语言在区块链的开发与应用
开发语言·python·rust·区块链·solidity·move
FksLiao32 分钟前
Superset安装
python
L Jiawen39 分钟前
【Python · PyTorch】卷积神经网络(基础概念)
pytorch·python·cnn
goomind44 分钟前
深度学习模型评价指标介绍
人工智能·python·深度学习·计算机视觉
XiaoLeisj1 小时前
【JavaEE初阶 — 多线程】生产消费模型 & 阻塞队列
java·开发语言·java-ee