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

相关推荐
liulun13 分钟前
Windows注册鼠标钩子,获取用户选中的文本
c++·windows·qt
九转成圣13 分钟前
windows10安装配置并使用Miniconda3
python·conda
Aerkui15 分钟前
Python高阶函数-eval深入解析
开发语言·python
胖哥真不错1 小时前
数据分享:汽车测评数据
python·机器学习·数据分享·汽车测评数据·car evaluation
小诸葛的博客1 小时前
client-go如何监听自定义资源
开发语言·后端·golang
入 梦皆星河1 小时前
go原理刨析之channel
开发语言·后端·golang
Pandaconda1 小时前
【新人系列】Golang 入门(十二):指针和结构体 - 上
开发语言·后端·golang·go·指针·结构体·后端开发
6<71 小时前
【go】类型断言
开发语言·后端·golang
旷野本野2 小时前
【Java】Maven
java·开发语言·maven
我自纵横20232 小时前
事件处理程序
开发语言·前端·javascript·css·json·ecmascript