随笔 - 44,  文章 - 2,  评论 - 22,  阅读 - 95728

1. install brew
        

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

 

2. install python3

brew install python3 
brew info python3
python3 -V

 

3. install sip & pyqt5

pip3 install sip
pip3 install pyqt5

 

simple.py

复制代码
import sys
from PyQt5.QtWidgets import QMainWindow, QTextEdit, QApplication, qApp, QAction
from PyQt5.QtGui import QIcon


class simple(QMainWindow):

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

    def initUI(self):
        self.setWindowTitle('hello')
        self.setObjectName("helloWin")
        self.resize(500, 300)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = simple()
    ex.show()
    sys.exit(app.exec_())
View Code
复制代码

 simple2.py

复制代码
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *


class FirstWindow(QWidget):

    signal = pyqtSignal(str)
    def __init__(self, parent=None):
        # super这个用法是调用父类的构造函数
        # parent=None表示默认没有父Widget,如果指定父亲Widget,则调用之
        super(FirstWindow, self).__init__(parent)
        self.resize(100, 100)
        self.btn = QToolButton(self)
        self.btn.setText("click")
        self.signal.connect(self.sinCall)

    def sinCall(self, text):
        print("sin emit:", text)
        self.btn.setText(text)

    def closeEvent(self, event):        
        result = QMessageBox.question(self,
                      "Confirm Exit...",
                      "Are you sure you want to exit ?",
                      QMessageBox.Yes| QMessageBox.No)
        event.ignore()

        if result == QMessageBox.Yes:
         event.accept()


class SecondWindow(QWidget):
    def __init__(self, parent=None):
        super(SecondWindow, self).__init__(parent)
        self.resize(200, 200)
        self.setStyleSheet("background: black")        

    def handle_click(self):
        if not self.isVisible():
            self.show()

    def handle_close(self):
        self.close()


if __name__ == "__main__":
    App = QApplication(sys.argv)
    ex = FirstWindow()
    s = SecondWindow()
    ex.btn.clicked.connect(s.handle_click)
    #ex.btn.clicked.connect(ex.hide)
    ex.signal.emit("signal text")
    ex.show()
    sys.exit(App.exec_())
View Code
复制代码

 

4. install Qt (可选, 方便做界面,类似winform做界面用: 界面可视化工具,可以很方便的设计UI,所见即所得)
  a. install xcode
  b. download Qt https://www.qt.io/download/ 

 

 

5. install pycharm(可选, IDE, 方便开发: 可集成Qt; Qt的ui文件转py; 直接运行python)
  a. 配置Qt Designer:   Qt的界面可视化工具,可以很方便的设计UI,所见即所得    

  1. 打开 PyCharm 的设置
  2. 找到 Tools -> External Tools
  3. 点击 + -> Create Tool

      
      b. 配置PyUIC:   这个工具可以把Qt Designer的UI文件,转换成Py文件
               

    python3 -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py

    c. 右键菜单中选择 External Tools 即可         
    d. 配置 pyrcc (安装完python3以后就有了)

    pyrcc5 resources.qrc -o resources.py



    使用

    复制代码
    resource.qrc
    <!DOCTYPE RCC>
    <RCC version="1.0"> 
     <qresource prefix="/img">
        <file alias="a.png">./img/a.png</file>
        <file alias="b.png">./img/b.png</file>
      </qresource>
    </RCC> 
    
    pyrcc5 img_rcc.qrc -o img.py
    
    # 导入这个文件,会自动调用资源初始化函数
    from img.py import * 
    # 使用资源的时候 访问的文件名 即 qrc里的 :prefix+alias ,例如
    img = QPixmap(":/img/a.png")
    复制代码

     

6.install pyinstaller (可选, python转可执行文件:exe, pkg))

pip3 install pyinstaller
pyinstaller -F -w {PyFile}.py

 

posted on   dfg727  阅读(527)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示