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图表创建的类
QtCoreQt核心类
QtDBus使用D-Bus协议支持IPC的类
QtDataVisualization支持3D数据可视化的类
QtDesigner允许使用Python扩展Qt设计器的类
QtGuiwidget和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集成的类
QtWebEngineCoreWeb引擎核心类
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
  • 可以直接通过拖动左边工具栏中的控件至窗口中进行窗口的设计并保存文件,文件格式为.ui
  • 在PyCharm中,找到.ui文件,右键 打开菜单找到External Tools->PyUIC,该ui文件便被自动转换为py文件

 2、窗体背景

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

如何给窗体添加背景? 

  1. 打开PyCharm,选择Tools -> External Tools -> Qt Designer
  2. 鼠标右键点击“改变样式表”
  3. 点击添加资源->background-image
  4. 这边我已经添加过了,刚开始没有的话就点击左上角那个铅笔图案添加路径
  5. 在你设置的路径下点击该按钮即可添加图片
  6. 添加相应格式还原相关控件的背景
  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:嗨呀刚刚结束给老师的汇报,看样子还要大改一下界面,大噶加油~ 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RexHarrr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值