PyQt是什么?
QT是跨平台C++库的集合,它实现高级API来访问现代桌面和移动系统的许多方面。这些服务包括定位和定位服务、多媒体、NFC和蓝牙连接、基于Chromium的web浏览器以及传统的UI开发。PyQt5是Qt v5的一组完整的Python绑定。它被实现为超过35个扩展模块,并使Python在所有支持的平台(包括IOS和Android)上被用作C++的替代应用程序开发语言。PyQT5也可以嵌入在基于C++的应用程序中,以允许这些应用程序的用户配置或增强这些应用程序的功能。
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的安装和配置请看下面的链接
转载:PyQt5+Pycharm安装和配置_章子雎Kevin的博客-CSDN博客_pycharm安装pyqt5
成果展示:
后续的细节及完善还没开始做,只展示一个大体的界面。
1、日历(QCalendar)
这个日历是PyQt5 Designer里自带的日历控件,不需要我们在自己去写,这也是QT Designer特别好的一点,即使不懂代码编写,也能够直接容易地设计可视化界面。
2、窗体背景
这边的背景是提前设计好了三个板块,再用ps搞出了三个半透明的版块来存放不同内容
如何给窗体添加背景?
- 打开PyCharm,选择Tools -> External Tools -> Qt Designer
- 鼠标右键点击“改变样式表”
- 点击添加资源->background-image
- 这边我已经添加过了,刚开始没有的话就点击左上角那个铅笔图案添加路径
- 在你设置的路径下点击该按钮即可添加图片
- 添加相应格式还原相关控件的背景
- 保存文件为.qrc格式
- 用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:嗨呀刚刚结束给老师的汇报,看样子还要大改一下界面,大噶加油~