Python图形界面-PyQt5入门系列教程
文章平均质量分 80
PyQt5 入门学习
smart_cat
这个作者很懒,什么都没留下…
展开
-
PyQt5利用Qt designer(QT设计师)使用tab widget和stacked widget实现多页面切换
本文介绍了如何通过PyQt5的 Qt designer(QT设计师),使用tab widget和stacked widget控件实现多页面切换功能原创 2022-12-20 00:52:54 · 29666 阅读 · 2 评论 -
在PyQt中使用QProcess运行一个进程
设计应用程序时,有时不希望将一个不太相关的功能集成到程序中,或者是因为该功能与当前设计的应用程序联系不大,或者是因为该功能已经可以使用现成的程序很好地实现了,这时就可以在当前的应用程序中调用外部的程序来实现该功能,这就会使用到进程。Qt应用程序可以很容易地启动一个外部应用程序,而且Qt也提供了很多种进程间通信的方法。原创 2022-12-18 17:35:40 · 14702 阅读 · 0 评论 -
PyQt中的多线程QThread示例
PyQt中的多线程QThread示例。传统的图形用户界面应用程序都只有一个执行线程,并且一次只执行一个操作。如果用户从用户界面中调用一个比较耗时的操作,那么当执行这个程序时,虽然实际上该操作正在进行,但用户界面通常会冻结而不再响应。为了解决这个问题,通常会让用户的UI界面运行在它自己的线程中,而另外的事件处理过程则发生在一个或多个其他线程中。这样做之后,即使在处理那些数据密集的事件时,应用程序也能对GUI用户界面保持响应。原创 2022-12-08 00:43:05 · 17744 阅读 · 1 评论 -
26. [Python GUI] PyQt5中拖放详解之拖放动作
拖放动作是指用户希望怎样处理拖放的数据,比如移动、复制、还是创建由目标到源的链接等。原创 2022-11-28 20:56:48 · 18136 阅读 · 0 评论 -
25. [Python GUI] PyQt5中拖放的基本原理
拖放通过调用 QDrag::exec()函数而启动,该函数是一个阻塞函数(但不会阻塞主事件循环),这意味着在拖放操作结束之前,不会返回该函数,调用 QDrag::exec()函数后, Qt 拥有对拖动对象的所有权,并会在必要时将其删除。当拖动操作正在进行时,以及当具有焦点时按下键盘的修饰键(比如 Ctrl)时, 发送该事件, 要使部件能接收到该事件,则该部件必须接受 QDragEnterEvent 事件。当拖动操作进入部件时,该事件被发送到部件,忽略该事件,将会导至后续的拖放事件不能被发送。原创 2022-11-28 03:03:08 · 17423 阅读 · 0 评论 -
24. [Python GUI] PyQt5中的模型与视图框架-表格部件QTableWidget
QTableWidget 类继承自 QTableView,该类是一个由 Qt 实现的标准的表格部件,该类的数据项由 QTableWidgetItem 类管理。当前单元格(或当前项目)与当前索引或当前选择是相同的,即可以同时选择多个单元格,但只能有一个当前单元格,当编辑单元格时,只会编辑当前单元格。当前单元格通常具有焦点边框。单元格和项目的区别(重要概念):项目是指 QTableWidgetItem 类的对象,因此空单元格是不含有项目的。当在空单元格上单击鼠标时,会发送 cellClicked()信号,但不原创 2022-11-28 00:57:27 · 17880 阅读 · 0 评论 -
23. [Python GUI] PyQt5中的模型与视图框架-抽象视图基类QAbstractItemView
QAbstractItemView 类继承自 QAbstractScrollArea,后者又继承自 QFrame,该类是 Qt 所有视图类的基类, Qt 的所有视图都需要子类化该类。注意:该类是抽象类,因此不能创建该类的对象。原创 2022-11-26 17:51:12 · 18360 阅读 · 0 评论 -
22. [Python GUI] PyQt5中的模型与视图框架-自定义模型的一个简单示例
针对PyQt5中的模型与视图框架,前文已非常详尽地讨论了抽象模型基类QAbstractItemModel与自定义模型的原理。在此基础之上,通过一个简单的示例程序,来巩固一下理解。原创 2022-11-24 01:33:42 · 17957 阅读 · 0 评论 -
21. [Python GUI] PyQt5中的模型与视图框架-抽象模型基类QAbstractItemModel与自定义模型
模型索引是由 QModelIndex 类进行描述的,但该类只有一个默认构造函数,而使用默认构造函数创建的模型索引是无效模型索引,因此要创建一个有效的模型索引,需要使用工厂函数QAbstractItemModel::createIndex()来创建,在重新实现纯虚函数 index()和 parent()时,都有可能会调用该工厂函数来创建模型索引。自定义模型至少rowCount()index()parent()data()原创 2022-11-23 01:32:08 · 18717 阅读 · 0 评论 -
20. [Python GUI] PyQt5中的模型与视图框架-实现一个简单的文件浏览器的例子
这个例子里不涉及数据的更新,只是简单的将模型和视图结合起来,通过这个例子我们能简单了解模型和视图的工作原理,形成一个初步的印象。原创 2022-11-23 00:06:20 · 18353 阅读 · 0 评论 -
19.[Python GUI] PyQt5中的模型与视图框架-基本原理
MVC把图形界面分为三个部分:模型(Model),视图(View)和控制器(Controller),MVC把需要处理的数据及其显示分离开来。Qt对模型/视图结构的具体实现模型:Qt使用抽象类QAbstractItemModel来描述模型,所有的模型都是通过子类化该抽象类而实现的。视图:Qt使用抽象类QAbstractItemView来描述视图,所有的视图都是通过子类化该抽象类而实现的。Qt实现了一些标准的现成视图,比如QListView,QTableView,QTreeView等等。原创 2022-11-22 15:26:08 · 18881 阅读 · 0 评论 -
18. [Python GUI] PyQt5中的事件系统之事件过滤器EventFilter
Qt事件系统一个非常强大的功能是:QObject实例在看到它自己的事件之前,可以通过设置另外一个QObject实例先监视这些事件。在一个部件中监控其他多个部件的事件,这便是通过Qt提供的事件过滤器来实现的。事件过滤器和其他部件不同,它不是一个类,只是由两个函数组成的一种操作,用来完成一个部件对其他部件的事件的监视。要对一个部件使用事件过滤器,那么就要先使用它的installEventFilter()方法为其安装事件过滤器,这个方法的参数表明了监视对象。原创 2022-11-22 00:00:52 · 19364 阅读 · 0 评论 -
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 · 18945 阅读 · 0 评论 -
16.PyQt5中的事件系统之事件(QEvent)的传递(分发)和处理
继承关系见下图,其中左侧为顶级父类一个程 序中只能有一个 QCoreApplication 及其子类的对象QCoreApplication:主要提供无 GUI 程序的事件循环QGuiApplication:用于管理 GUI 程序的控制流和主要设置QApplication:该类专门为 QGuiApplication 提供基于 QWidget 的程序所需的一些功能,主要用于处理部件的初始化、最终化。使用用户的桌面设置初始化应用程序。执行事件处理,也就是说该类能从底层系统接收并分发事件。比如,使用。原创 2022-11-21 20:49:39 · 20589 阅读 · 4 评论 -
15.PyQt5中的事件系统之事件(QEvent)简介
事件(event)是由窗口系统或者Qt自身产生的事情或动作的通称。当用户按下或者松开键盘或鼠标的按键时,就可以产生一个键盘或者鼠标事件;当某个窗口第一次显示的时候,就会产生一个绘制事件,用来告知窗口需要重新绘制它本身,从而使窗口可见。大多数事件是作为用户动作的响应而产生的,但是也有一些例外,比如像定时器事件,则是由系统独立产生的。在使用Qt进行编程开发时,通常不需要考虑事件,因为在发生某些重要的事情时,Qt窗口部件都会发射信号。原创 2022-11-21 17:53:37 · 19272 阅读 · 0 评论 -
14.PyQt5应用程序主窗口QmainWindow详解
对于日常见到的应用程序而言,许多都是基于主窗口的,主窗口包含了菜单栏、工具栏、状态栏和中心区域等。原创 2022-11-21 01:04:04 · 20476 阅读 · 0 评论 -
13. PyQt5实现多页面切换之QTabWidget
QTabWidget 类,是一个实现多页面切换的类,该类已经实现了多页面切换的部分功能,只需再对其进行少量的设计(主要是要设计页面中的内容)便可实现多页面切换了。因此,使用该类实现多页面切换时,就不需要再使用 QStackedLayout 布局把页面与选项卡相关联,也不需要使用类似 QVBoxLayout 的布局把选项卡和页面放置在一起。与 QStackedLayout 布局原理相同,只有当前页面(即可见页面)是可见的,所有其他页面都不可见,用户可通过选择不同的选项卡来显示其对应的其他页面。原创 2022-11-20 18:06:12 · 29975 阅读 · 6 评论 -
12. PyQt5实现多页面切换之QTabBar
卡设置需要显示的页面,可以通过 QStackedLayout 布局为选项卡提供页面,另外 Qt 也提。QTabBar 类直接继承自 QWidget。该类提供了一个选项卡栏,该类仅提供了一个选项卡,并没有为每个选项卡提供相应的页面,因此要使选项卡栏实际可用,需要自行为每个选项。供了一个现成的选项卡部件 QTabWidget。QTabBar 类中的方法。QTabBar 类的属性。原创 2022-11-20 15:49:54 · 20985 阅读 · 0 评论 -
11. PyQt5实现多页面切换之QStackedLayout和QStackedWidget
多页面切换相关的类主要有QStackedLayout、QStackedWidget、QTabBar和QTabWidget等。原创 2022-11-20 00:06:36 · 21804 阅读 · 0 评论 -
10. PyQt5布局管理器
QBoxLayout盒式布局管理器,可以创建水平或垂直方向的布局管理器,使子部件在水平方向或者垂直方向排成一列,它将所有的空间分成一行盒子,然后将每个部件放入一个盒子中。通常使用的是该类的两个子类QHBoxLayout和QVBoxLayout,因为子类有比较方便的构造函数。原创 2022-11-19 20:18:15 · 18952 阅读 · 0 评论 -
9. PyQt5布局的基本原理
使用布局管理器的好处是可以不用为窗口中的每个部件设置其大小和位置,布局管理器会自动对这些部件进行排列,当窗口大小发生变化时,布局还会自动定位和调整部件的大小,当向布局中添加或移除一个部件时,布局也可以自动适应这些情况,总之,使用布局能够自适应很多情形,大大减少了我们的编程负担。不了解布局的情况下,我们使用QT Designer往界面上拖放部件时,大多是随意放置的,这对于学习部件的使用是没有太大影响的,但是,对于一个完善的软件,布局管理是必不可少的。原创 2022-11-16 00:02:46 · 19247 阅读 · 0 评论 -
8. PyQt5信号(signals)和槽(slots)
信号和槽是用于对象之间的通信的,它们是Qt编程的基础,也是Qt的核心。它们可以让编程人员把那些互不了解的对象绑定在一起,来完成对象之间的协同操作。为此 Qt 引入了一些关键字,他们是slots、 signals、 emit,这些都不是 C++关键字,是 Qt 特有的,这些关键字会被 Qt 的 moc转换为标准的 C++语句。假如我们单击窗口上的一个按钮后想要弹出一个对话框,那么可以将这个按钮的单击信号和自定义的槽关联起来,在这个槽中创建一个对话框并且显示它。原创 2022-11-15 00:56:54 · 17541 阅读 · 0 评论 -
7. PyQt5对话框QDialog
2、 窗口标志:用于指定窗口的类型和窗口的外观, 窗口类型描述了部件是什么类型的窗口,比如部件是对话框、窗口、弹出窗口、子窗口等,部件只能是一种窗口类型,窗口外观描述了窗口的外观,比如窗口是否有关闭按钮、是否有最大化最小化按钮、是否有标题栏等,窗口外观可以同时指定多个。若窗口具有父级,则根据窗口管理系统的不同, 子窗口通常总是位于其各自的父窗口之上,并且没有自己的任务栏条目,通常是共享父部件的任务栏条目,比如,即使子窗口处于未激活状态而父窗口处于激活状态时,子窗口仍会位于父窗口之上。原创 2022-11-14 01:41:57 · 16689 阅读 · 0 评论 -
6. PyQt5基础窗口部件QWidget
QWidget类是所有用户界面对象的基类,被称为基础窗口部件。QWidget类继承自QObject类和QPaintDevice类,其中QObject类是所有支持QT对象模型的对象的基类QPaintDevice类是所有可以绘制的对象的基类这些类都位于QtWidgets模块类,注意,QtWidgets是模块,QWidget是类,两个名称不一样。原创 2022-11-14 00:25:06 · 16337 阅读 · 0 评论 -
5. PyQt5程序使用qDebug进行调试
PyQt5使用qDebgu进行程序调试原创 2022-11-14 00:20:56 · 15837 阅读 · 0 评论 -
4. PyQt5的主要模块
PyQt主要模块原创 2022-11-13 15:10:45 · 14400 阅读 · 0 评论 -
3. 打包python应用程序
python程序打包为exe可执行文件原创 2022-11-13 13:02:19 · 15753 阅读 · 0 评论 -
2. 使用PyQt5运行第一个helloworld程序
使用PyQt5编写第一个helloworld程序使用PyQt5Designer编写一个helloworld程序原创 2022-11-13 01:06:00 · 15218 阅读 · 1 评论 -
1. 安装PyQt5+PyQt5Designer
PyQt5入门,windows上安装PyQt5+PyQt5Designer原创 2022-11-13 00:53:43 · 18651 阅读 · 0 评论