PyQt5制作简易桌面

PyQt是什么?

QT是跨平台C++库的集合,它实现高级API来访问现代桌面和移动系统的许多方面。这些服务包括定位和定位服务、多媒体、NFC和蓝牙连接、基于Chromium的web浏览器以及传统的UI开发。PyQt5是Qt v5的一组完整的Python绑定。它被实现为超过35个扩展模块,并使Python在所有支持的平台(包括IOS和Android)上被用作C++的替代应用程序开发语言。PyQT5也可以嵌入在基于C++的应用程序中,以允许这些应用程序的用户配置或增强这些应用程序的功能。

PyQt5包含的模块

PyQt5的模块如下表所示:(按字典序排列)

Enginio 用于访问Qt云服务的类(不推荐)
QAxContainer 访问ActiveX控件和COM对象的类
Qt 其他模块的合并
Qt3DAnimation 在模拟中支持动画的类
Qt3DCore 支持近实时仿真系统的核心类
Qt3DExtras 预先构建的元素,与Qt3D一起使用
Qt3DInput 处理使用Qt3D时用户输入的类
Qt3DLogic 启用帧同步的类
Qt3DRender 启用2D和3D呈现的类
QtAndroidExtras 特定于Android的附加类
QtBluetooth 支持设备之间蓝牙连接的类
QtChart 支持2D图表创建的类
QtCore Qt核心类
QtDBus 使用D-Bus协议支持IPC的类
QtDataVisualization 支持3D数据可视化的类
QtDesigner 允许使用Python扩展Qt设计器的类
QtGui widget和OpenGL gui共有的核心类
QtHelp 用于创建和查看可搜索文档的类
QtLocation 用于创建映射应用程序的类
QtMacExtras

特定于macOS和iOS的附加类

QtMultimedia 多媒体内容、摄像机和收音机的类
QtMultimediaWidgets 提供附加的多媒体相关小部件和控件的类
QtNetwork 核心网络类
QtNetworkAuth 网络授权类
QtNfc 支持设备之间NFC连接的类
QtOpenGL 在传统窗口小部件中呈现OpenGL的类(不推荐)
QtPositioning 从卫星、wifi等获取定位信息的类
QtPrintSupport 实现打印的类
QtPurchasing 支持从应用商店购买应用程序的类
QtQml 与QML语言集成的类
QtQuick 使用Python代码扩展QML应用程序的类
QtQuickWidgets 用于在传统小部件中呈现QML场景的类
QtRemoteObjects 用于在进程或系统之间共享QObject的API的类
QtSensors 用于访问系统硬件传感器的类
QtSerialPort 用于访问系统的串行端口的类
QtSql 与SQL数据库集成的类
QtSvg 提供对SVG支持的类
QtTest 支持GUI应用程序单元测试的类
QtWebChannel 用于Python和HTML/JavaScript之间的点对点通信的类
QtWebEngine 用于将QML Web引擎对象与Python集成的类
QtWebEngineCore Web引擎核心类
QtWebEngineWidgets 基于Chromium的web浏览器
QtWebKit 基于WebKit2的web浏览器(已弃用)
QtWebKitWidgets 基于WebKit1的web浏览器(已弃用)
QtWebSockets 实现WebSocket协议的类
QtWidgets 用于创建经典桌面样式ui的类
QtWinExtras 特定于Windows的附加类
QtX11Extras 特定于X11的其他类
QtXml 支持SAX和DOM到XML接口的类
QtXmlPatterns 支持其他XML技术的类
sip 绑定开发人员和用户的实用程序
uic 用于处理Qt设计器创建的文件的类

一、PyQt5+Pycharm安装和配置(基于anaconda)

PyQt5的安装和配置请看下面的链接

转载:PyQt5+Pycharm安装和配置_章子雎Kevin的博客-CSDN博客_pycharm安装pyqt5

二、桌面制作

成果展示:

 后续的细节及完善还没开始做,只展示一个大体的界面。

1、日历(QCalendar) 

这个日历是PyQt5 Designer里自带的日历控件,不需要我们在自己去写,这也是QT Designer特别好的一点,即使不懂代码编写,也能够直接容易地设计可视化界面。

  • 根据上面的链接安装配置PyQt5后,打开PyCharm,选择Tools -> External Tools -> Qt Designer
  • PyQt5制作简易桌面_第1张图片

    可以直接通过拖动左边工具栏中的控件至窗口中进行窗口的设计并保存文件,文件格式为.ui
  • 在PyCharm中,找到.ui文件,右键 打开菜单找到External Tools->PyUIC,该ui文件便被自动转换为py文件
  • PyQt5制作简易桌面_第2张图片

 2、窗体背景

PyQt5制作简易桌面_第3张图片

 这边的背景是提前设计好了三个板块,再用ps搞出了三个半透明的版块来存放不同内容

如何给窗体添加背景? 

  1. 打开PyCharm,选择Tools -> External Tools -> Qt Designer
  2. 鼠标右键点击“改变样式表”PyQt5制作简易桌面_第4张图片
  3. 点击添加资源->background-imagePyQt5制作简易桌面_第5张图片
  4. 这边我已经添加过了,刚开始没有的话就点击左上角那个铅笔图案添加路径PyQt5制作简易桌面_第6张图片
  5. 在你设置的路径下点击该按钮即可添加图片PyQt5制作简易桌面_第7张图片
  6. 添加相应格式还原相关控件的背景PyQt5制作简易桌面_第8张图片
  7. 保存文件为.qrc格式
  8. 用External Tools中的pyrcc5将文件转化为py文件

注:之后每添加一张新的图片都需要重复该步骤将图片添加至qrc文件中

具体教程可以看该视频:(2021实测可用)Python+Pycharm+PyQt5实现GUI设计简单操作_哔哩哔哩_bilibili

 3、实时时间

  • 添加lable控件放置时间
  • 编写相应函数设置实时时间
  • def ti():#设置实时时间
        t = time.strftime('%H:%M:%S', time.localtime(time.time())) //显示格式
        t1 = time.strftime('%Y-%m-%d      %A ',time.localtime(time.time()))
        MyUI.label0.setText(t) //lable0放的是时分秒
        MyUI.label1.setText(t1)//lable1放的是日期和星期几
        x = threading.Timer(0.5,ti) //每0.5s刷新一次
        x.start()

4、天气接口API

这里使用的是和风天气的API接口:天气API - API | 和风天气开发平台 

def weather(site):#天气接口API
    with open(r'H:/pycharm/code/PyQt/LocationList-master/China-City-List-latest.csv', 'rt', encoding='utf-8') as f:
        r = csv.reader(f)
        for i in r:
            if site in i[2]:
                location_id = i[0]
                print(i)
        print(location_id)
        url = r'https://devapi.qweather.com/v7/weather/now?location={}&key=db3267e3de5a482a8cd9aed947dc3546'.format(location_id)
        response = requests.get(url=url)
        results = response.json()
        print(results)
    MyUI.label3.setText('城市:  '+site)
    MyUI.label4.setText('天气:  ' + results.get('now').get('text'))
    MyUI.label5.setText('气温:  ' + results.get('now').get('temp')+'℃')
    MyUI.label6.setText('体感温度:' + results.get('now').get('feelsLike') + '℃')
    MyUI.label7.setText('湿度:  ' + results.get('now').get('humidity'))
    wa = threading.Timer(900.0, weather)
    wa.start()

//MyUI是我自己的ui文件的名字

具体操作可见:和风天气API接口调用_韩酥的老猫的博客-CSDN博客_和风天气url

5、退出程序按钮及label上小图标的添加

def ex():#退出程序
    app = QApplication.instance()
    app.quit()
    os._exit()

按钮及函数之间的连接:例如   MyUI.pushButton_4.clicked.connect(ex)

小图标的添加通过QIcon进行添加(提前将图片放入qrc中)

在ui转换成的py文件中的相关控件中添加相关代码

icon = QIcon('退出.jpg')
size = QSize(40, 40)//设置图标大小
self.pushButton_4.setIcon(icon)
self.pushButton_4.setIconSize(size)

ps:嗨呀刚刚结束给老师的汇报,看样子还要大改一下界面,大噶加油~ 

你可能感兴趣的:(qt,python)