Python桌面图形程序美化的方法论

很多人都吐槽,使用 Tkinter、PyQt5等工具制作出来的图形界面程序太丑了。既然觉得它丑,我们来想想,它为什么会那么丑。

功能性是开发的第一要务

每一个 Python 图形界面库都有它自有的功能特性和界面特性。一般来说,这些库的开发者着重要考虑的是功能性的实现。比如、列表框、拖拽框、悬浮框、自定义控件、webview等。

一个图形界面库,受不受开发者的欢迎,首先在于它提供的功能是否全面和强大。

如果仅仅是炫酷和好看,如果功能上有所缺失,其应用也只能在小范围和特定领域内得到拥簇。会导致一种“初遇时惊艳,永久后坑多”的状态。

模块提供的都是原生组件

为了便于理解,我们在这里把桌面图形界面的开发(以PyQt5为例)和Web前端开发进行一下不严谨的关联对应。

  • PyQt5 中的各种控件(QPushButton、QLineEdit、QCheckBox等)对应于 HTML 中的各类元素标签(<a><p><h>),用于基础结构的编排。

  • PyQt5 中的 QSS 对应于 HTML 中的 CSS,用于对样式的控件。

  • PyQt5 中的信号槽 对应于 HTML 中的 JavaScript,用于对行为交互的控制。

在不引入任何 CSS 和 JavaScript 的情况下,HTML 中编写的任何标签,在浏览器中显示的都是最原始的形状和样式。

<html>
    <h1>州的先生</h1>
    <a href="https://zmister.com"></a>
    <input type="text" placeholder="表单输入框" />
    <button>一个按钮</button>
    <select>
        <option>一个选项</option>
        <option>两个选项</option>
    </select>
</html>

上述 HTML 代码在浏览器中将会显示为如下图所示:

是不是也是很丑不美观?那就对了。没有经过样式定义的 HTML 标签元素就是这样丑。

而现代Web开发中,几乎所有页面的元素标签都是依照设计原型,引用 UI 组件或自写CSS,对界面的外观进行美化的。

下图是比较知名的前端 UI 库 ElementUI 提供的按钮组件:

通过审查元素,可以看到,其用 CSS 对按钮元素进行了很多改造:

同理,在 Python 的图形界面开发中,我们仅仅是使用了库提供的原生控件和布局,将一个图形界面元素的基础框架构建出来了,并没有对其样式进行任何美化和修饰。这样编写出来的图形界面程序,肯定会让人觉得丑。

界面的美化的几个关键点

通过上面对 Web 页面的对应,我们知道了我们编写的图形界面程序为什么不美观。

如何解决,州的先生根据实际经验给出如下的建议:

有一个好的设计原型

不是要大家去兼修 UI 设计,而是在构建一个图形界面之前,对程序的布局,结构有一个清晰明确的原型。就算是使用网格布局,也应该设计好各个控件在网格的位置和距离。

在有原型之后,可以参考一下现有的消费端桌面软件(QQ音乐之类的)或者上站酷之类的设计网站上看看专业 UI 设计师作品的样式和色彩搭配。

在这里,色彩搭配是一个雷区。好的色彩搭配让程序界面赏心悦目,差的色彩搭配,让人觉得粗制滥造。

充分利用QSS

Qt 提供了 QSS 这个特性让开发者可以自定义小部件的外观,其支持各种属性、子状态和控件。

充分利用好 QSS 来配置界面,图形界面的美化工作可以完成 80% 到 90%。

QSS 支持很多种控件进行配置,由于列表过长,在此就不一一列举出来。贴出 Qt 官方文档中关于 Qt Style Sheets Reference 的链接,大家可以在上面查看:

https://doc.qt.io/qt-5/stylesheet-reference.html

同时,Qt 官方文档中还提供了很多控件使用 QSS 美化的示例,大家也可以参考一下,链接为:

https://doc.qt.io/qtforpython/overviews/stylesheet-examples.html

利用控件的自有属性

QSS 能够完成 80% 到 90% 的界面美化工作,但是还有 10% 到 20% 的场景,QSS 表示心有余而力不足。

什么场景呢?比如窗口边框的处理、窗口默认三剑客(最小化、最大化、关闭)的处理。

面对这一类的处理,就得利用各个控件的自有属性来配置了。如果知道控件的自有属性有哪些呢?答案当然还是看文档。在此个例子:

QProgressBar()是进度栏控件,它的默认样式如下图所示:

我们在官方文档中可以看到它有如下的方法可供调用:

显然,那几个set开头的方法,就是可以直接对控件进行配置的方法:

  • setAlignment():用于设置进度条的对其方式;

  • setFormat():用于设置进度条的文本格式;

  • setInvertedAppearance():用于设计进度条是否反转增长;

  • setMaximum():用于设置进度条的最大值;

  • setMinimum():用于设置进度条的最小值;

  • setOrientation():用于设置进度条的布局,是水平还是垂直;

这样,通过控件的自有属性,我们可以对控件的那些QSS无法处理的基础样式进行自定义。

总而言之,需要多翻阅文档。

最后,用一个 PyQt5 美化的音乐播放器界面镇文,希望大家编写的图形界面程序都德艺双馨,秀外慧中。


由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:

(1)点击页面最上方“小詹学Python”,进入公众号主页。
(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu 是一个开源的操作系统,而 Python 是一种简单易学、功能强大的编程语言,它们可以很好地结合在一起进行桌面程序开发。 首先,为了在Ubuntu上进行Python桌面程序开发,我们需要安装Python开发环境和相关的库。在Ubuntu上,Python已经预装了,但是可能缺少一些常用的库。可以使用以下命令来安装所需的库: ``` sudo apt-get install python3-dev python3-tk ``` 安装完成后,我们可以使用各种 Python 框架来开发桌面程序。常用的框架有PyQt、Tkinter和GTK+等。下面以使用PyQt为例介绍。 PyQt 是一个功能强大的桌面应用程序开发框架,它提供了丰富的GUI组件和工具,可以轻松创建各种功能的桌面程序。首先,我们需要在Ubuntu上安装PyQt: ``` sudo apt-get install python3-pyqt5 ``` 安装完成后,我们可以使用PyQt Designer来设计界面。PyQt Designer是一个可视化的界面编辑器,可以让我们通过拖拽和放置控件来设计界面。设计完成后,可以将设计好的文件保存为.ui文件。 接下来,我们可以使用PyQt提供的工具将.ui文件转换为.py文件,以便在Python中使用。可以使用以下命令进行转换: ``` pyuic5 -x input.ui -o output.py ``` 最后,我们可以在Python代码中导入生成的.py文件,并编写逻辑代码来实现功能。通过调用PyQt提供的函数和方法,我们可以处理用户交互、显示数据和执行各种操作。 综上所述,通过使用Ubuntu操作系统和Python编程语言,我们可以使用PyQt等框架来开发功能强大的桌面应用程序。这种开发方式灵活且易于学习,适用于各种不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值