IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> MAC-OS-M1 安装pyqt5以及学习使用 -> 正文阅读

[开发工具]MAC-OS-M1 安装pyqt5以及学习使用

1、brew安装pyqt5,全局环境

  • /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
  • source /Users/xxx/.zprofile 这条指令在上一条指令执行结束会有提示
  • brew install pyqt@5,这条指令执行结束,会有额外的python 3.9版本 (也是本次遇到的问题

2、python3.10 下载

3、下载pycharm

4、学习使用pyqt5

QMainWindow , 继承了QWidget,增添了toolbar 扩展功能等等。
QWidget , 面板
QDialog,对话框,主要是一些提示框,有“人机交互”的作用

  • Ex-1:简单应用
if __name__ == '__main__':
    app = QApplication(sys.argv)
    # 1、操作ui的功能(定义应用对象,参数为系统参数)
    w = QWidget()
    # 2、操作ui的设计(大小,按钮,输入框等)
    w.resize(250, 150)
    # 2-1、配置ui窗口大小
    w.move(300, 300)
    # 2-2 配置ui窗口位置
    w.setWindowTitle('Simple')
    # 2-3 配置ui窗口的标题
    w.show()
    # 2-4 展示ui窗口
    sys.exit(app.exec_())
    # 2-5 app.exec_() 应用对象 执行
  • Ex-2: 提示框、按钮、字体的应用
# ##***提示文本***## #
class PromptText(QWidget):
    # 子类继承父类
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        QToolTip.setFont(QFont('SansSerif', 10))
        # 这个静态方法设置了用于提示框的字体,这里使用10px大小的SansSerif字体。
        self.setToolTip('This is a <b>QWidget</b> widget')
        # 调用setTooltip()方法创建提示框;富文本格式。类似html语法
        btn = QPushButton('Button', self)
        # 创建按钮
        btn.setToolTip('This is a <b>QPushButton</b> widget')
        # 鼠标放上去会显示的内容
        btn.resize(btn.sizeHint())
        # 改变按钮大小
        btn.move(300, 100)
        # 配置按钮位置
        self.setGeometry(300, 100, 600, 600)
        # 配置窗口位置(300,100),以及大小(600*600)
        self.setWindowTitle('Tooltips')
        # 配置窗口上方的名字
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = PromptText()
    sys.exit(app.exec_())

在这里插入图片描述

  • Ex3,退出按钮
# ##***关闭窗口***## #
class CloseW(QWidget):
 
   def __init__(self):
       super().__init__()
       self.initUI()

   def initUI(self):
       qbtn = QPushButton('Quit', self)  # 创建了一个按钮。按钮是一个QPushButton类的实例。
       # 构造方法的第一个参数是显示在button上的标签文本。第二个参数是父组件。
       # 父组件是Example组件,它继承了QWiget类。
       qbtn.clicked.connect(QCoreApplication.instance().quit)
       # 点击信号传给了应用对象
       qbtn.resize(qbtn.sizeHint())
       qbtn.move(500, 50)
       self.setGeometry(300, 100, 600, 600)
       self.setWindowTitle('excise')
       self.show()

if __name__ == '__main__':
   app = QApplication(sys.argv)
   ex = CloseW()
   sys.exit(app.exec_())

在这里插入图片描述

  • Ex4:信号与槽机制

信号:需要明确 发送者和 接收者是哪个

# ##***Message Box***## #
class MessageBox(QWidget):

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

    def initUI(self):
        qbtn = QPushButton('Quit', self)
        # 创建了一个按钮。按钮是一个QPushButton类的实例。
        # 构造方法的第一个参数是显示在button上的标签文本。第二个参数是父组件。
        # 父组件是Example组件,它继承了QWiget类。
        qbtn.clicked.connect(QCoreApplication.instance().quit)
        qbtn.resize(qbtn.sizeHint())
        qbtn.move(500, 50)
        self.setGeometry(300, 100, 600, 600)
        self.setWindowTitle('excise')
        self.show()

    def closeEvent(self, event):
        # 重写了父类 Qwidget 中的close Event方法

        reply = QMessageBox.question(self, 'Message',
                                     "Are you sure to quit?", QMessageBox.Yes |
                                     QMessageBox.No, QMessageBox.No)
        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MessageBox()
    sys.exit(app.exec_())

在这里插入图片描述

  • Ex5:状态栏的应用

主要是这个statusBar 类中方法的使用

# ##***状态栏***## #
class StatusBar(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.statusBar().showMessage('Ready')
        # 主要是这个statusBar 类的使用
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('Statusbar')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = StatusBar()
    sys.exit(app.exec_())

在这里插入图片描述

  • Ex-6: 工具栏
# ##***工具栏***## #
class ToolBar(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        exitAction = QAction('Exit', self)
        exitAction.setShortcut('Ctrl+Z')
        # 触发动作
        exitAction.triggered.connect(qApp.quit)
        # 触发动作 
        self.toolbar = self.addToolBar('Exit')
        self.toolbar.addAction(exitAction)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Toolbar')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = ToolBar()
    sys.exit(app.exec_())

在这里插入图片描述

  • Ex-7: 菜单栏
  • 注意:mac里的菜单栏会显示在mac的上方
    • menubar.setNativeMenuBar(False),可以让菜单显示在窗口,但有点儿丑
  • Mac中的pyqt5 的菜单使用 需要 配备QAction 这个类,否则显示不出菜单


import sys
from PyQt5.QtWidgets import QMainWindow, QAction, QMenu, QApplication


class Example(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        menubar = self.menuBar()

        # menubar.setNativeMenuBar(False)
        # mac中的菜单栏在上方,设置这个变量可以使他在下方

        fileMenu = menubar.addMenu('file')
        exitMenu = menubar.addMenu('edit')

        impMenu = QMenu('a', self)
        impAct = QAction('a-b', self)
        impMenu.addAction(impAct)

        newAct = QAction('b', self)
        fileMenu.addAction(newAct)
        fileMenu.addMenu(impMenu)

        exitAct = QAction('g', self)
        exitMenu.addAction(exitAct)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Submenu')
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

在这里插入图片描述

  • Ex-8: 信号与槽

6、参考博客

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 12:14:40  更:2021-12-05 12:15:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/24 10:26:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计