- 博客(123)
- 资源 (4)
- 收藏
- 关注
原创 Redhat rpm常用命令以及如何配置yum软件仓库使用yum install
本文介绍了Redhat rpm常用命令以及如何配置yum软件仓库使用yum install
2022-12-21 15:23:07
12266
原创 PyQt5利用Qt designer(QT设计师)使用tab widget和stacked widget实现多页面切换
本文介绍了如何通过PyQt5的 Qt designer(QT设计师),使用tab widget和stacked widget控件实现多页面切换功能
2022-12-20 00:52:54
33088
2
原创 Python面向对象编程之__slots__
最后,__slots__的存在不会对__getattribute__(), __getattr__(), __setattr__()等方法的调用产生任何影响,因为这些方法应该在类中重新定义。如果类继承自使用__slots__的基类,那么它也需要定义__slots__来存储自己的属性(即使它不会添加任何属性也是如此),这样才能充分利用__slots__提供的优势。使用__slots__的类的实例不再使用字典来存储实例数据。__slots__的使用也可以使代码不必要求实例具有底层__dict__属性。
2022-12-18 23:28:24
11105
原创 Python面向对象编程之对象表示和属性绑定
这些方法的默认行为是修改或删除obj的局部__dict__的值,除非请求的属性正好是一个特性或描述符。如果搜索过程失败,最终会尝试调用类的__getattr__()方法(如果已定义)来查找该属性。通过重新定义__getattr__(), __setattr__()和__delattr__(),代理可以捕获属性的访问操作,并透明地将这些操作转发给另一个对象。在类的内部,实例是使用字典来实现的,可以用实例的__dict__属性的形式访问该字典。对实例的修改始终会反映到局部__dict__属性中。
2022-12-18 23:13:05
11184
原创 在PyQt中使用QProcess运行一个进程
设计应用程序时,有时不希望将一个不太相关的功能集成到程序中,或者是因为该功能与当前设计的应用程序联系不大,或者是因为该功能已经可以使用现成的程序很好地实现了,这时就可以在当前的应用程序中调用外部的程序来实现该功能,这就会使用到进程。Qt应用程序可以很容易地启动一个外部应用程序,而且Qt也提供了很多种进程间通信的方法。
2022-12-18 17:35:40
15365
原创 在Python网络爬虫程序中使用生产者消费者模式爬取数据
本文介绍了在python网络爬虫程序中如何使用生产者与消费者模式进行数据爬取: 1. 生产者与消费者模式2. 队列Queue与进程间通信3. 在Python网络爬虫程序中使用队列进行进程间通信
2022-12-17 22:28:42
12194
1
原创 Python网络爬虫抓不到全部的html内容怎么办
Python网络爬虫抓不到全部的html内容怎么办?一种行之有效的解决方案是使用Selenium webdriver。详情请参考我的另一篇博文。
2022-12-15 12:43:14
15141
1
原创 Python使用Selenium Webdriver爬取网页所有内容
对于抓不到全部html内容的情况,我们能采取什么应对措施呢,本文介绍一种可行的方法,就是通过Selenium webdriver来模拟浏览器运行的方式,这样就可以做到在浏览器中看到是什么样,抓取的源码就是什么样,也就是可见即可爬。在浏览器中打开这个页面时,首先会加载这个HTML内容,接着浏览器会发现其中引入了一个app.js文件,然后便会接着去请求这个文件,获取到该文件后,便会执行其中的JavaScript代码,而JavaScript则会改变HTML中的节点,向其中添加内容,最后得到完整的页面。
2022-12-14 22:07:25
20208
1
原创 Python使用Selenium WebDriver的入门介绍及安装教程
WebDriver 以本地化方式驱动浏览器,就像用户在本地或使用 Selenium 服务器的远程机器上所做的那样,这标志着浏览器自动化的飞跃。Selenium WebDriver 指的是语言绑定和各个浏览器控制代码的实现。这通常被称为 WebDriver。Selenium WebDriver 是 W3C 推荐标准。WebDriver 被设计成一个简单和简洁的编程接口。WebDriver 是一个简洁的面向对象 API。它能有效地驱动浏览器。本文绝大部分内容,都可以从以下官方文档中找到。
2022-12-13 00:12:37
58013
5
原创 python使用requests库下载单张图片的简单示例
使用requests库,直接对图片的url进行请求,如果返回状态码为200(ok)的话,那么get方法返回的content二进制串即为图片的真实内容,我们只需将其写入文件即可。下面的示例代码中加入了路径的处理。
2022-12-11 16:54:06
16841
原创 PyQt中的多线程QThread示例
PyQt中的多线程QThread示例。传统的图形用户界面应用程序都只有一个执行线程,并且一次只执行一个操作。如果用户从用户界面中调用一个比较耗时的操作,那么当执行这个程序时,虽然实际上该操作正在进行,但用户界面通常会冻结而不再响应。为了解决这个问题,通常会让用户的UI界面运行在它自己的线程中,而另外的事件处理过程则发生在一个或多个其他线程中。这样做之后,即使在处理那些数据密集的事件时,应用程序也能对GUI用户界面保持响应。
2022-12-08 00:43:05
18378
1
原创 PyQt报错 QObject::connect: Cannot queue arguments of type ‘QTextCursor‘
解决PyQt中QObject::connect: Cannot queue arguments of type 'QTextCursor'的问题
2022-12-07 10:24:41
20970
1
原创 Windows使用ssh协议远程连接ubuntu linux子系统
当我们在windows上安装好ubuntu子系统后,肯定是需要远程进行连接的,比如我想用filezilla通过sftp协议传输点文件上去之类的,或者我使用vscode直接通过ssh协议进行远程登录开发等等,那么还是需要一点额外的配置的。我们需要确保两件事:我们先直接打开ubuntu子系统,通过windows菜单或windows store或windows terminal都行,登录进去,可以是普通用户,也可以用root用户,根据自己的实际情况来,这里示例的是以普通用户登录后切换到root用户后执行的情况。尝
2022-12-03 16:07:59
19535
1
原创 windows下安装ubuntu linux子系统
但我们现在自己的主机上跑linux时,有几种选择前两种方式属于比较完整的安装方式,都可以有图形用户界面,适合对图形界面有需求的同学。而最后一种linux子系统的方式,安装和运行最快,但是只有命令行,适合linux老手或者对图形界面需求不大的同学。本文介绍的是最后一种方式,如何在windows上安装ubuntu linux子系统。本机是windows10系统。进入windows store 微软商城,输入关键词ubuntu,即可找到多个版本的ubuntu子系统。选择一个你喜欢的即可,这里我选的是22.04
2022-12-03 14:37:46
22328
2
原创 Python基础之MySql数据库交互
在任何应用中,都需要持久化存储。一般有 3 种基础的存储机制:文件、数据库系统以及一些混合类型。这种混合类型包括现有系统上的 API、 ORM、文件管理器、电子表格、配置文件等。对于非常简单的应用而言,使用文件作为持久化存储通常就足够了,但是当文件或创建的数据存储系统不适用于大项目时,我们需要转而使用数据库,大多数复杂的数据驱动的应用是需要使用全功能的关系数据库的。一个关系数据库管理系统( RDBMS)通常可以管理多个数据库,比如销售、市场、用户支持等,都可以在同一个服务端(如果 RDBMS 基于服务器,可
2022-12-03 03:28:28
15809
原创 Python基础之SQLite数据库
对于非常简单的应用而言,使用文件作为持久化存储通常就足够了,但是大多数复杂的数据驱动的应用则需要全功能的关系数据库。SQLite 的目标则是介于两者之间的中小系统。它量级轻、速度快,没有服务器,很少或不需要进行管理。虽然简单,但是由于各种原因这个库很有吸引力。首先,它不需要独立的数据库服务器,也不要求任何特定的配置,只要与数据库文件连接,就可以在程序中立即开始使用(如果它不存在,会生成一个新文件)。
2022-12-01 23:31:06
17938
原创 Python数据库编程之关系数据库API规范
对于关系数据库的访问,Python社区已经制定出一个标准,称为Python Database API Specification。Mysql,Oracal等特定数据库模块遵从这一规范,而且可以添加更多特性。高级数据库API定义了一组用于连接数据库服务器、执行SQL查询并获得结果的函数和对象。
2022-11-30 00:40:19
17271
1
原创 26. [Python GUI] PyQt5中拖放详解之拖放动作
拖放动作是指用户希望怎样处理拖放的数据,比如移动、复制、还是创建由目标到源的链接等。
2022-11-28 20:56:48
18516
原创 25. [Python GUI] PyQt5中拖放的基本原理
拖放通过调用 QDrag::exec()函数而启动,该函数是一个阻塞函数(但不会阻塞主事件循环),这意味着在拖放操作结束之前,不会返回该函数,调用 QDrag::exec()函数后, Qt 拥有对拖动对象的所有权,并会在必要时将其删除。当拖动操作正在进行时,以及当具有焦点时按下键盘的修饰键(比如 Ctrl)时, 发送该事件, 要使部件能接收到该事件,则该部件必须接受 QDragEnterEvent 事件。当拖动操作进入部件时,该事件被发送到部件,忽略该事件,将会导至后续的拖放事件不能被发送。
2022-11-28 03:03:08
17753
原创 24. [Python GUI] PyQt5中的模型与视图框架-表格部件QTableWidget
QTableWidget 类继承自 QTableView,该类是一个由 Qt 实现的标准的表格部件,该类的数据项由 QTableWidgetItem 类管理。当前单元格(或当前项目)与当前索引或当前选择是相同的,即可以同时选择多个单元格,但只能有一个当前单元格,当编辑单元格时,只会编辑当前单元格。当前单元格通常具有焦点边框。单元格和项目的区别(重要概念):项目是指 QTableWidgetItem 类的对象,因此空单元格是不含有项目的。当在空单元格上单击鼠标时,会发送 cellClicked()信号,但不
2022-11-28 00:57:27
18150
原创 Python面向对象编程之对象行为与特殊方法
python中的对象通常根据它们的行为和实现的功能进行分类。例如,所有序列类型都分在一组,如字符串,列表和元组,就是因为它们都支持一组相同的序列操作,如s[n], len[s]等。所有基本的解释器操作都通过特殊的对象方法来实现。这些特殊方法的名称前后始终都带有双下划线"__"。当程序执行时,这些方法都由解释器自动触发。例如,操作x+y被映射为内部方法x.__add__(y), 而索引操作x[k]被映射为x.__getitem__(k)。每种数据类型的行为完全取决于它实现的一组特殊方法。
2022-11-27 19:07:08
17426
原创 23. [Python GUI] PyQt5中的模型与视图框架-抽象视图基类QAbstractItemView
QAbstractItemView 类继承自 QAbstractScrollArea,后者又继承自 QFrame,该类是 Qt 所有视图类的基类, Qt 的所有视图都需要子类化该类。注意:该类是抽象类,因此不能创建该类的对象。
2022-11-26 17:51:12
18588
原创 Python基础-面向对象编程之特性(property)
通常,我们访问实例或类的属性时,将返回所存储的相关值。而特性(property)是一种特殊的属性,访问它时会计算它的值。运行效果如下:从这个例子中,我们可以看到,Circle实例存储了一个变量c.radius。而c.area和c.perimeter是根据该值计算得来的。@property装饰器支持以简单属性的形式访问后面的方法,无需像平时一样添加额外的()来调用该方法。对象的使用者很难发现正在计算一个属性,除非在试图重新定义该属性时生成了错误消息。这种特性使用方式遵循所谓的。
2022-11-26 01:49:56
18036
原创 22. [Python GUI] PyQt5中的模型与视图框架-自定义模型的一个简单示例
针对PyQt5中的模型与视图框架,前文已非常详尽地讨论了抽象模型基类QAbstractItemModel与自定义模型的原理。在此基础之上,通过一个简单的示例程序,来巩固一下理解。
2022-11-24 01:33:42
18131
原创 21. [Python GUI] PyQt5中的模型与视图框架-抽象模型基类QAbstractItemModel与自定义模型
模型索引是由 QModelIndex 类进行描述的,但该类只有一个默认构造函数,而使用默认构造函数创建的模型索引是无效模型索引,因此要创建一个有效的模型索引,需要使用工厂函数QAbstractItemModel::createIndex()来创建,在重新实现纯虚函数 index()和 parent()时,都有可能会调用该工厂函数来创建模型索引。自定义模型至少rowCount()index()parent()data()
2022-11-23 01:32:08
18929
原创 20. [Python GUI] PyQt5中的模型与视图框架-实现一个简单的文件浏览器的例子
这个例子里不涉及数据的更新,只是简单的将模型和视图结合起来,通过这个例子我们能简单了解模型和视图的工作原理,形成一个初步的印象。
2022-11-23 00:06:20
18522
原创 19.[Python GUI] PyQt5中的模型与视图框架-基本原理
MVC把图形界面分为三个部分:模型(Model),视图(View)和控制器(Controller),MVC把需要处理的数据及其显示分离开来。Qt对模型/视图结构的具体实现模型:Qt使用抽象类QAbstractItemModel来描述模型,所有的模型都是通过子类化该抽象类而实现的。视图:Qt使用抽象类QAbstractItemView来描述视图,所有的视图都是通过子类化该抽象类而实现的。Qt实现了一些标准的现成视图,比如QListView,QTableView,QTreeView等等。
2022-11-22 15:26:08
19217
原创 18. [Python GUI] PyQt5中的事件系统之事件过滤器EventFilter
Qt事件系统一个非常强大的功能是:QObject实例在看到它自己的事件之前,可以通过设置另外一个QObject实例先监视这些事件。在一个部件中监控其他多个部件的事件,这便是通过Qt提供的事件过滤器来实现的。事件过滤器和其他部件不同,它不是一个类,只是由两个函数组成的一种操作,用来完成一个部件对其他部件的事件的监视。要对一个部件使用事件过滤器,那么就要先使用它的installEventFilter()方法为其安装事件过滤器,这个方法的参数表明了监视对象。
2022-11-22 00:00:52
19771
原创 17. [Python GUI] PyQt5中的事件系统之事件(QEvent)的接受accept和忽略ignore
在 event()函数中调用 accept()或 ignore()是没有意义的, event()函数通过返回一个 bool 值来告诉调用者是否接受了事件(true 表示接受事件)。Qt 默认值是 accept (接受事件),但在 QWidget 的默认事件处理函数(比如 keyPressEvent())中,默认值是ignore(),因为这样可实现事件的传递(即子对象未处理就传递给父对象处理)。也就是说若调用 accept(),则事件不会传递给父对象,若调用 ignore()则事件会向父对象传递。
2022-11-21 21:13:39
19272
原创 16.PyQt5中的事件系统之事件(QEvent)的传递(分发)和处理
继承关系见下图,其中左侧为顶级父类一个程 序中只能有一个 QCoreApplication 及其子类的对象QCoreApplication:主要提供无 GUI 程序的事件循环QGuiApplication:用于管理 GUI 程序的控制流和主要设置QApplication:该类专门为 QGuiApplication 提供基于 QWidget 的程序所需的一些功能,主要用于处理部件的初始化、最终化。使用用户的桌面设置初始化应用程序。执行事件处理,也就是说该类能从底层系统接收并分发事件。比如,使用。
2022-11-21 20:49:39
21072
4
原创 15.PyQt5中的事件系统之事件(QEvent)简介
事件(event)是由窗口系统或者Qt自身产生的事情或动作的通称。当用户按下或者松开键盘或鼠标的按键时,就可以产生一个键盘或者鼠标事件;当某个窗口第一次显示的时候,就会产生一个绘制事件,用来告知窗口需要重新绘制它本身,从而使窗口可见。大多数事件是作为用户动作的响应而产生的,但是也有一些例外,比如像定时器事件,则是由系统独立产生的。在使用Qt进行编程开发时,通常不需要考虑事件,因为在发生某些重要的事情时,Qt窗口部件都会发射信号。
2022-11-21 17:53:37
19419
数据库系统概念 原书第6版
2018-12-12
AdminLTE-2.4.10.tar
2019-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅