Python图形界面开发笔记(一)安装及入门

(序)相关软件及安装说明

1. Python版本及安装

3.8及以下版本支持win7
3.9及以上版本只支持win10及以上系统
https://www.python.org/

2. Python pip源

默认源速度比较慢。

命令行修改法
(1)命令行临时修改法
在用pypi下载python包的时候,可以直接使用pip install packagename -i参数,指定下载源的URL

pip install ping3 -i https://pypi.tuna.tsinghua.edu.cn/simple

(2)命令行永久修改法
使用pip config set global.index-url来直接指定下载源的URL,这样就不用手动修改配置文件了

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

3.国内源URL分享

以下是国内互联网常用的pypi安装源URL,在国内互联网下载的速度非常
pypi 清华大学源:https://pypi.tuna.tsinghua.edu.cn/simple
pypi 腾讯源:http://mirrors.cloud.tencent.com/pypi/simple
pypi 阿里源:https://mirrors.aliyun.com/pypi/simple/
pypi 豆瓣源 :http://pypi.douban.com/simple/

4. VSCode配置python环境

https://blog.csdn.net/qq_40577131/article/details/112932251

5. Pycharm安装教程

https://blog.csdn.net/qiqi1220/article/details/121671381


(一 )Python Qt 简介

1. 安装 PySide2

pip install pyside2 -i https://pypi.douban.com/simple/

建议:如果你的程序要发布给客户使用,建议使用32位的Python解释器,这样打包发布的exe程序可以兼容32位的Windows

2. 安装 PyQt5

pip install pyqt5-tools

即可同时安装 PyQt5 和 一些重要的工具,比如 Qt designer。
一个小例子:

from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton,  QPlainTextEdit,QMessageBox

class Stats():
    def __init__(self):
        self.window = QMainWindow()
        self.window.resize(500, 400)
        self.window.move(300, 300)
        self.window.setWindowTitle('薪资统计')

        self.textEdit = QPlainTextEdit(self.window)
        self.textEdit.setPlaceholderText("请输入薪资表")
        self.textEdit.move(10, 25)
        self.textEdit.resize(300, 350)

        self.button = QPushButton('统计', self.window)
        self.button.move(380, 80)

        self.button.clicked.connect(self.handleCalc)


    def handleCalc(self):
        info = self.textEdit.toPlainText()

        # 薪资20000 以上 和 以下 的人员名单
        salary_above_20k = ''
        salary_below_20k = ''
        for line in info.splitlines():
            if not line.strip():
                continue
            parts = line.split(' ')
            # 去掉列表中的空字符串内容
            parts = [p for p in parts if p]
            name,salary,age = parts
            if int(salary) >= 20000:
                salary_above_20k += name + '\n'
            else:
                salary_below_20k += name + '\n'

        QMessageBox.about(self.window,
                    '统计结果',
                    f'''薪资20000 以上的有:\n{salary_above_20k}
                    \n薪资20000 以下的有:\n{salary_below_20k}'''
                    )

app = QApplication([])
stats = Stats()
stats.window.show()
app.exec_()

(三)界面设计师 Qt Designer

1. 软件位置如下:

C:\Users\user\AppData\Local\Programs\Python\Python38\Lib\site-packages\PySide2
在这里插入图片描述

2.动态加载UI文件

from PySide2.QtWidgets import QApplication, QMessageBox
from PySide2.QtUiTools import QUiLoader

class Stats:
    def __init__(self):
        # 从文件中加载UI定义
        # 从 UI 定义中动态 创建一个相应的窗口对象
        # 注意:里面的控件对象也成为窗口对象的属性了
        # 比如 self.ui.button , self.ui.textEdit
        self.ui = QUiLoader().load('main.ui')
        ## 其他代码

app = QApplication([])
stats = Stats()
stats.ui.show()
app.exec_()

如果你使用的是PyQt5 而不是 PySide2,加载UI文件的代码如下


from PyQt5 import uic

class Stats:
    def __init__(self):
        # 从文件中加载UI定义
        self.ui = uic.loadUi("main.ui")

3.转化UI文件为Python代码

3.1 命令行转换

还有一种使用UI文件的方式:先把UI文件直接转化为包含界面定义的Python代码文件,然后在你的程序中使用定义界面的类

执行如下的命令 把UI文件直接转化为包含界面定义的Python代码文件

pyside2-uic main.ui > ui_main.py

如果你安装的是PyQt5,执行如下格式的命令转化

pyuic5 main.ui > ui_main.py
3.2 在Pycharm中添加pyside2uic扩展

方法见链接:
https://www.jb51.net/article/218294.htm

4.发布程序

我们前面开发的QT界面程序,在Windows 上只需要执行下面的命令,即可制作独立exe程序

pyinstaller httpclient.py --noconsole --hidden-import PySide2.QtXml
4.1 使用pyinstaller 打包 exe

https://blog.csdn.net/pipisorry/article/details/50620122

4.2可视化 auto-py-to-exe 打包 exe

https://blog.csdn.net/cainiao_python/article/details/121045407

(四) UI界面引入的三种方式总结

1.手写代码

# 手写代码的基础框架
# 导入需要的库and元件
from PySide2.QtWidgets import QApplication, QMainWindow, QPushButton, QTextEdit

# 初始化函数
def sayHello():
    textEdit.setText("hello")

# 初始化控件
app = QApplication([])
window = QMainWindow()
window.resize(800, 600)
window.move(300, 310)
window.setWindowTitle('MainWindow')

textEdit = QTextEdit("init-information", window)
textEdit.resize(500, 400)
textEdit.move(40, 50)
# textEdit.setText("init-information")

button = QPushButton('pushButton', window)
button.move(600, 300)
button.resize(130, 50)
# button.setText('pushButton')

# 编写信号与槽,以及图像化

button.clicked.connect(sayHello)
window.show()
app.exec_()

2.加载UI文件

import sys
from PySide2.QtUiTools import QUiLoader
from PySide2.QtWidgets import QApplication
from PySide2.QtCore import QFile


# 定义触发函数
def sayHello():
    window.textEdit.setText("hello world!")
    print("Button click!")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    ui_file = QFile("UI/mainWindow.ui")
    ui_file.open(QFile.ReadOnly)
    loader = QUiLoader()
    window = loader.load(ui_file)
    ui_file.close()
    
    # 在这里加入信号触发、空间位置控制等代码
    window.pushButton.clicked.connect(sayHello)
    # 添加结束
    window.show()
    sys.exit(app.exec_())

3.载入转换的py文件

import sys
# from sys import argv
# 如果使用sys 那将意味着将要打包很多多西,所以可能会出现问题
from mainWindow import Ui_MainWindow
from PySide2.QtWidgets import QMainWindow, QApplication


# 定义信号和槽函数
def signleAndSlot():
    UI.pushButton.clicked.connect(sayHello)


# 定义触发函数
def sayHello():
    UI.textEdit.setText("Hello World!")


class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = MainWindow()
    UI = main.ui
    # 调用信号和槽的函数以及空间管理等函数
    signleAndSlot()
    main.show()
    sys.exit(app.exec_())

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值