1.vnpy源码阅读学习(3):学习vnpy界面的项目项目实现
2.新手如何利用PyQt5和Python3编写界面UI
3.大神用Python做个AI出牌器,实现财富自由附源码
4.PyQt5系列教程(53):欢乐斗地主QMdiArea的源码使用
5.PyQt5实战项目:基于MongoDB数据库的图书馆借阅系统创建(附源码)
6.超详细 PyQt5 配置 教程:python 窗体开发 PyQt5 界面设计配置
vnpy源码阅读学习(3):学习vnpy界面的实现
在深入学习vnpy界面实现的过程中,我们首先了解了PyQt5的开源基础并进入vnpy的UI部分。从run.py文件中的项目项目UI部分开始,我们注意到关键代码如create_qapp(),源码该方法在/vnpy/trader/ui/init.py中定义,开源android面试 源码用于创建QApplication并处理全局异常。项目项目init.py的源码作用是封装文件夹为包,便于引入和管理,开源其内的项目项目方法在引入时会自动执行。
在主窗体生成部分,源码我们重点研究了mainwindow.py的开源代码。__init__()方法中主要是项目项目初始化窗口的属性,而真正吸引眼球的源码是initUI()函数,它包含了init_dock和init_toolbar等组件的开源创建。init_dock通过create_dock创建自定义Widget并放入浮动窗口(QDockWidget)中,可以参考PyQt5高级教程中的相关内容。init_toolbar则负责初始化工具栏,而init_menu()则用于生成菜单并将其与相应的槽函数关联起来,确保菜单操作的响应。
在打开功能窗口时,vnpy会先检查该窗口是否已在widgets列表中,如果没有,会新建实例并添加,然后调用show()或exec_()方法来显示或运行窗口。这样,vnpy的界面布局管理相当细致,确保了窗口的有序和一致性。通过这些代码,我们可以逐步理解vnpy界面是如何构建和管理的。
新手如何利用PyQt5和Python3编写界面UI
紧随时代的进步社会的发展,我们不能仅仅抓住python2和PyQt4,maven自动下载源码为了不被社会淘汰我们应该学习更多的东西。比如:Python3和PyQt5.
这里我们默认你已经安装了Python3和PyQt5相应的库。 Ubuntu: sudo apt-get install python3 sudo pip3 install pyqt5(或sudo pip install pyqt5) Windows: 下载安装python3和pyqt5 python3 pyqt5库 pip install pyqt5
这里以Windows操作系统为例。 打开PyQt5 Qt Designer 默认情况下会出现新建窗体的提示,如果没有,直接点击左上角新建即可。 这里我们打算新建一个Widget窗体。
这里你可以拉一个label模块进去,并且双击可以修改label模块的显示文字。 这里我们暂且修改为:“这是我的第一个窗体”。
设置完后可能觉得字体有点儿小,不过没关系,你可以鼠标右键label。选择更改多信息文本,这里把字体设置为.同样的也可以像word设置文字的居中,字体样式,颜色等。
另外,也可以鼠标右键label选择更改样式表。 在这里你一样也可以设置字体的各种属性,并且设置项更多,自定义度更高。
我们可以点击窗体-预览。或是快捷键CTRL+R对我们所见的窗体进行预览。
如果没有任何问题了,我们可以将它保存下来。注意,文件的保存格式默认为.ui。因为我们保存的是ui设计文件。 Pyhton3如果要使用这个界面文件,必须将其转换为Pyhton3程序才可以。学校网站php源码 在cmd窗口下,输入命令:pyuic5 -o ui.py untitled.ui 就可以自动帮你转换了。 其中ui.py是转换后python文件名,untitled.ui是你的窗体文件名
转换成功后,我们利用记事本打开.py文件查看转换后的源代码。 我们发现,源代码只有一个类,没有具体可执行参数。所以这个程序目前还是不能运行的。
导入库 import sys 最后面写入程序入口: if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_Form() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_()) 具体看下图完整程序。
完成后在cmd窗口执行ui.py或python ui.py或双击文件,进行脚本程序的运行。 如果是双击运行程序默认也会打开一个cmd弹出窗,解决方案是将文件后缀.py改为.pyw就可以了。
大神用Python做个AI出牌器,实现财富自由附源码
在互联网上,我注意到一个有趣的开源项目——快手团队的DouZero,它将AI技术应用到了斗地主游戏中。今天,我们将通过学习如何使用这个原理,来制作一个能辅助出牌的欢乐斗地主AI工具,也许它能帮助我们提升游戏策略,迈向财富自由的境界。 首先,让我们看看AI出牌器的实际运作效果: 接下来,我们逐步构建这个AI出牌器的制作过程:核心功能与实现步骤
UI设计:首先,我们需要设计一个简洁的用户界面,使用Python的pyqt5库,如下是关键代码:
识别数据:在屏幕上抓取特定区域,通过模板匹配识别AI的手牌、底牌和对手出牌,android studio 源码下载这部分依赖于截图分析,核心代码如下:
地主确认:通过截图确定地主身份,代码负责处理这一环节:
AI出牌决策:利用DouZero的AI模型,对每一轮出牌进行判断和决策,这部分涉及到代码集成,例如:
有了这些功能,出牌器的基本流程就完成了。接下来是使用方法:使用与配置
环境安装:你需要安装相关库,并配置好运行环境,具体步骤如下:
位置调整:确保游戏窗口设置正确,AI出牌器窗口不遮挡关键信息:
运行测试:完成环境配置后,即可启动程序,与AI一起战斗:
最后,实际操作时,打开斗地主游戏,让AI在合适的时间介入,体验AI带来的智慧策略,看看它是否能帮助你赢得胜利!PyQt5系列教程():欢乐斗地主QMdiArea的使用
上期文章中,我们一起探讨了QTabWidget、QStackedWidget和QDockWidget的运用,通过这些工具,我们能够实现在一个窗口内集成更多的组件。本期,我们转向学习QMdiArea,一个强大的工具,它提供了一个展示MDI窗口的区域,类似于Windows在一个屏幕上同时维护多个应用程序窗口,也适用于在一个显示区域内管理多个文件窗口。
QMdiArea的功能类似于MDI窗口的窗口管理器。它绘制并管理它所包含的maven 下载jar 源码窗口,提供级联或平铺布局,通常作为QMainWindow的中心部件用于创建MDI应用,但也可以放置在任何布局中。通过将区域添加到主窗口,代码如下所示:
添加QMdiArea到主窗口的代码片段。
每个子窗口都是QMdiSubWindow实例,通过addSubWindow()函数添加到MDI区域。通常会传递QWidget作为内部窗口部件,或直接传递QMdiSubWindow。子窗口继承QWidget,支持与正常顶层窗口相同的API编程。
子窗口在获取键盘焦点或调用setFocus()时变为活动状态。用户通过常规方式移动焦点来激活窗口。MDI区域在活动窗口改变时发出subWindowActivated()信号,而activeSubWindow()函数返回当前活动子窗口。
subWindowList()函数返回所有子窗口的列表,可用于创建包含窗口列表的弹出式菜单。
子窗口按照当前窗口排序,用于subWindowList()、activateNextSubWindow()和activatePreviousSubWindow()。在使用cascadeSubWindows()和tileSubWindows()进行窗口级联或平铺时,此排序规则同样重要。
QMdiArea提供内置的布局策略cascadeSubWindows()和tileSubWindows()。这些功能轻松集成到菜单条目中,用于管理窗口布局。
详细信息请参考官方文档。
本期实验通过模拟发放扑克牌,具体步骤包括发1张牌、随机发放5张牌和收牌清空操作。我们通过自定义QLabel类,赋予每个对象随机的扑克牌素材,将每一个QLabel视为一个QWidget,借助QMdiArea的相关函数实现这一过程。
使用QMdiArea的一部分代码展示。代码量并不繁重。
为了在工具栏上实现不同功能的按钮,可以参考相关知识点。若希望在工具栏按钮上显示文字,需添加特定代码。
新建QMdiArea对象,设置为主窗口的中心部件。cardlist为包含扑克牌文件名的列表。发1张牌,从cardlist随机选取一个元素即可。随机发放5张牌,从cardlist中选取包含5个元素的随机子列表。
发1张牌的代码示例。随机获取扑克牌文件名。
QMdiSubWindow是QMdiArea提供的子窗口类,代表MDI区域中的顶级窗口,包含窗口标题栏、内部窗口部件等,视样式可能还包括窗口框架和尺寸夹点。
构建QMdiSubWindow最常用方法是使用内部窗口部件调用QMdiArea.addSubWindow()。也可以自行创建子窗口,通过setWidget()设置内部窗口部件。
与常规顶级窗口编程类似,您可以使用相同的API,如show()、hide()、showMaximized()和setWindowTitle()等函数。
在代码中,通过setWidget()将自定义的QLabel类Card作为内部窗口部件,并通过addSubWindow()添加子窗口。
子窗口通常有最小化、最大化和关闭按钮。显示的扑克牌通过设置setWindowFlags(Qt.WindowMinimizeButtonHint)来仅显示最小化按钮。同时调整窗口大小并显示。
发5张牌的函数与上述功能类似,不再赘述。
通过这个函数可以快速关闭所有子窗口。
收牌的函数实质上是对子窗口进行排列,以级联模式排列所有子窗口。
平铺模式排列所有子窗口的方法是QMdiArea.tileSubWindows(),有兴趣的读者可以尝试。
本次学习内容较为基础,详细实现请下载源代码自行探索。
文章至此,希望大家喜欢本篇文章。如果你觉得有帮助,请给我点赞、赞赏或分享给好友。关注微信公众号:学点编程吧,发送“pyqt”获取本期代码。加油!(ง •̀_•́)ง (*•̀ㅂ•́)
PyQt5实战项目:基于MongoDB数据库的图书馆借阅系统创建(附源码)
搭建高级PyQt项目:图书馆借阅系统
项目简介与设计思路
搭建一个基于MongoDB数据库的图书馆借阅系统,利用PyQt5构建用户界面,借助MongoDB作为云数据库托管服务,实现图书馆的基本功能。项目设计流程包括选择技术栈、业务逻辑规划、UI界面设计、代码实现、信号槽连接以及测试应用。
技术栈选择与业务逻辑
选择PyQt5作为GUI界面构建工具,MongoDB作为数据库系统。业务逻辑包含新用户注册、图书增删改查操作。UI界面使用Qt Designer进行个性化设计。
MongoDB数据库简介
MongoDB是一种非关系型数据库,通过Json文档组织数据,支持更灵活的数据结构。数据库包含数据库、集合、文档、字段四个关键概念,数据库由集合组成,集合包含文档,文档类似Python字典。
用户界面设计
设计图书馆系统用户界面,鼓励个性化设计。
数据库连接与操作
安装依赖包pymongo、certifi、dnspython,连接云数据库简单快捷。数据库基本操作包括新建数据库、集合、增加删除更新记录以及查找书目。
注册新用户
实现多用户支持,使用公共用户名public_user进行新用户注册,管理员设置权限。
软件安装与配置
安装软件包,配置数据库连接信息,使用源代码进行测试。
系统使用简介
登录数据库,新建图书馆数据库,实现图书借阅预约、借阅与归还操作。
功能说明
预约:搜索或浏览书目列表,点击预约,完成预约过程。
借阅:具有管理员角色的用户,搜索书目,点击借阅,完成借阅。
归还:具有管理员角色的用户,搜索需要归还的书,点击还书,完成归还操作。
总结与感谢
完成高级PyQt项目搭建,通过实践学习数据库操作与用户界面设计。感谢支持与关注,欢迎在GitHub上给项目加星。
超详细 PyQt5 配置 教程:python 窗体开发 PyQt5 界面设计配置
在Python的窗体开发中,使用PyQt5进行界面设计需要经历一些初始化步骤。首先,确保安装三个关键包:PyQt5,PyQt5Designer,以及PyQt5-tools。安装命令如下:
1. 打开命令行,依次运行以下命令:
shell
pip install PyQt5
pip install PyQt5Designer
pip install PyQt5-tools
配置好环境后,开始使用QtDesigner。在项目文件夹中,通过"external tools"选择"pyuic",打开Qt设计师界面,开始设计可视化界面。在此过程中,你可以自由拖动组件,调整布局,完成后保存设计,PyCharm会自动生成一个.ui文件。
接着,生成.py文件。在设计师界面上保存的.ui文件上,右键点击,选择"Open with" -> "PyUIC",这将把.ui文件转换为.py文件,便于后续的代码集成。
真正开发应用时,PyQt5的核心是QApplication和QWidget。QApplication是应用程序的入口,而QWidget是窗口的基础类。创建一个简单的应用,你需要实例化这两个类,如下所示:
python
from PyQt5.QtWidgets import QApplication, QWidget
# 创建 QApplication 实例
app = QApplication([])
# 创建 QWidget 实例,这是窗口的基本容器
window = QWidget()
# ... 其他窗口设置和事件处理代码 ...
# 运行应用程序
app.exec_()
以上就是PyQt5的基础配置和简单应用开发。如果你对这个过程有任何疑问,欢迎随时提问,我会尽力帮助解答。感谢你的关注和支持,如果你对源码感兴趣,可以通过添加我的****获取更多资源:ds_class
2024-11-27 12:52
2024-11-27 12:23
2024-11-27 12:19
2024-11-27 11:58
2024-11-27 10:55
2024-11-27 10:18