Qt

python × Qt应用开发系列目录(连载中)

python × Qt应用开发 · 0 -- 序 python × Qt应用开发 · 1 -- 基本界面 python × Qt应用开发 · 2 -- 界面初步设计 python × Qt应用开发 · 2.5 -- 改进软件界面 python × Qt应用开发 · 3 -- MVC中model的基本实现 python × Qt应用开发 · 4 -- 数据库设计 python × Qt应用开发 · 5 -- 数据库helper类的编写…

Read more

python × Qt应用开发 · 2.5 -- 改进软件界面

上一篇文章完成基本的界面,但是应用看起来并不算特别好看。 主要是因为软件的界面使用默认的样式和普通的窗口框架。接下来从这两个方面出发,尝试改进软件界面。 自定义样式 Qt 给控件的样式化提供了一定的自由度,包括背景色、边框和特定控件的自定义,使用类似CSS的语法。这要求编写软件的人了解基础的CSS语法。各种控件和详细例子:点这里 要改变一个控件的样式,可以在属性编辑器中找到styleSheet属性,将CSS代码写进去。 这里以中间栏的输入框作为例子。 选择输入框,在属性编辑器中找到styleSheet,输入以下CSS代码。 QLineEdit{ border-radius: 10px; padding: 5px 10px; margin: 0 10%; background-color: white; border: 1px solid #c9c9c9; color…

Read more

python × Qt应用开发 · 5 -- 数据库helper类的编写

在上一篇博文中已经生成了数据库,而代码中的视图和模型也准备好了,但是怎么将两者联系起来呢?显然我们需要在其中做做文章,找一个“中间人”去读取数据库的数据并且转化为适合模型的数据。通常称这个“中间人”为数据库helper类。 什么是helper类 顾名思义就是类似助手的一个类,数据库的helper类就是一个帮助程序员方便调用数据库的类。此类可以做的事情通常都是包括连接数据库,执行SQL,转换数据类型等。 操作Python自带的sqlite3库 可以自己纯手写python代码来全程管理数据库,需要操心的地方有点多。 databaseHelper 在app包下新建一个store包,新建一个databaseHelper.py文件。 为帮助代码的理解,极其推荐先去阅读Introduction to SQLite in Python和Advanced SQLite Usage in Python,SQ…

Read more

python × Qt应用开发 · 4 -- 数据库设计

在上一篇探讨MVC模式使用的博文中,已经成功实现了Tree Viewwidget的数据显示。而实际上,其中的数据是我们自己硬编码的,显然不符合要求。节点中的_data域也只是简单的字符串,没有体现出MVC的优势。对于本应用中要求的比较有结构化的数据,很自然地考虑使用数据库来组织。 数据库的考虑 作为本地应用,考虑使用python自带的嵌入式数据库sqlite3。SQLite跟普通数据库管理如MYSQL等大同小异,SQL语句也是相差不大,一般有学习过数据库的读者找找资料大概就能轻松理解,而没有使用过数据库或者不懂数据库的读者则应该先补充好数据库的知识再来阅读本文。 在python,只需要加上import sqlite3语句就能使用SQLite,方便至极。 笔记本 笔记本的数据结构是一棵棵树,叶子节点是章节。考虑使用一个名为notebook的表来保存笔记本数据,一个名为chapter的表来保存…

Read more

python × Qt应用开发 · 3 -- MVC中model的基本实现

上一篇博文中,界面是设计好了,也能运行了,但是这个应用还只是个空壳子,widget里什么都没有。这篇博文就来充实其中一个的widget,左边的文件夹列表。 MVC大法好 有过一些开发经验的读者肯定会听说过MVC,这里不详细解释MVC了。Qt中也有提供这样的模式,而且既有提供已经整合好的widget,也有提供单单view而自己需要编写相应的model和controller。后一种显然要比前一种麻烦,但是使用上可能后一种反而更多。为什么?因为在实际开发中,涉及到数据的显示很多时候都要附带上数据的操作,那些整合好的widget——比如List Widget和Tree Widget和Table Widget——能做到的基本只是将数据都转化为字符串来输出,一旦涉及到数据的修改的话……也不是不可以做到,但是编写出来的代码既繁琐又不通用。 从Qt的官方文档来看,这些widget的函数大多数都是操作vie…

Read more

python × Qt应用开发 · 2 -- 界面初步设计

之前的一篇可以算是前置知识的快速介绍。从这篇开始就是正式地编写应用了。其实是因为之前我还没有想好要做什么应用。 为了兼顾举举例子和真实性,选了这么一个应用:PQ笔记。基本的功能如下: 笔记支持富文本粘贴 按文件夹分类笔记 画出大概的样子 先来一个大概的设计图。 就是一个规规矩矩的三栏布局,左边是笔记本的目录树,中间是文档列表,右边是文档内容。这个只是现阶段的大概构思,最终做出来不一定是这样的,有可能在一些细节上会有所更改,但是整体界面几乎都可以定下来了。 打开ui_mainwindow.ui,从Containers里拉出三个Widget,分别命名为widgetLeft、widgetMiddle和widgetRight。这就是左中右三栏的容器。 在左边栏中拖入一个pushButton和一个treeView,分别对应设计图上的两个控件。注意,如果拖放位置正确(也就是QtDesigner知道你要…

Read more

python × Qt应用开发 · 1 -- 基本界面

至少出来一个窗口 既然是GUI,那么最起码能运行并显示一个窗口出来。 首先在python的工程里面建好工程结构。 结构并非必要,只是个人习惯这样建而已。下面来解说一下。 main.py,整个应用的入口 app包,用来放应用的文件 app.view包,用来放应用ui相关的文件 打开QtDesigner,会有一个自动弹出框,直接选择其中的“Main Window”,然后点create,一个窗口就出来啦。QtDesigner的主界面暂时没什么好说的,有经历过GUI设计的读者估计也很熟悉。 现在我们先保存,文件名为ui_mainwindow.ui,保存到app.view下。 接下来是比较重要的一步,也是之后经常用到的步骤:将.ui文件编译成.py文件。 执行以下命令。 pyside-uic mainwindow.ui -o mainwindow.py 非常好理解,使用pyside-uic将ui…

Read more

python × Qt应用开发 · 0 -- 序

python? python是个很好用的语言,即使学校没有教,很多同学也会自己学。虽然比较少用python来做桌面程序,但是某些情况下需要用到python的数学或者统计功能的时候,又需要用有GUI的程序来交差。个人比较推荐用C#来做桌面应用程序(Windows平台的话),只是VS这庞大的IDE和各种库还是会让某些有独特癖好的人侧目。这个时候用大家都比较喜欢的python就最好啦,搭配Qt来做GUI实在是方便。 于是就有了本系列。对比起其他教程/指南里只有单独的控件编写实例,在系列中我会使用python和Qt真实地编写出一个应用来,一边写应用一边写本系列的博文。途中遇到的问题也会记录下来并且尽量还原解决过程,希望能让读者有开发的真实感。实际上我在自主学习的时候在找资料和控件的测试使用上已经疲于奔命,也希望本系列能够总结出一个比较有效和固定的流程。 Qt? 其实要在python实现GUI并不一…

Read more