ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Python GUI编程正在抛弃Tkinter库

Python GUI编程正在抛弃Tkinter库 有人问, 为何众多开发者不使用GUI制作, 而是会选择PyQt, 或是选择其他的呢?真的的确是太过陈旧了, 然而为何不予以采用呢? 其根本缘由在于, 和 PyQt 完全不属于同一类别的产品, 并非是讲它算不上 GUI 库, 而是它们的应用场景并不相同。你瞧, 有那么个东西, 它就好似那种随你拿取随时能使用的小小工具箱, 用它去搞个小型的板凳, 或者做把小型的椅子, 这是行得通的, 然而却绝不能期望凭借它来造出汽车。那么PyQt, 它就如同是一个规模巨大的制造车间, 工具极为齐全, 流程也相当完善, 不管是汽车、飞机, 还是大炮, 它都能够予以制造。没错, 属于内置的GUI库, 你仔细琢磨琢磨, 安装包仅仅几十兆, 能具备多大的能力呢? 它所具有的优势在于能够迅速地构建原型, 像是搭建一个简易的性能监测页面、计算器、输入表单等等, 由于它不需要进行环境配置, 不存在依赖库, API数量少且简易, 启动速度又快, 故而制作demo级别的GUI会显得更加得心应手。若是要进行游戏开发 , 开展商业软件制作 , 从事高级控件研发 , 那便不合适了 , 缘由在于其天生控件样式稀少 , 并且古老陈旧 , 缺少高级组件 , 布局设计稍有繁杂 , 而且在渲染复杂多媒体文件时颇为费力 , 故而就不适宜用于开发格调高的GUI软件了。这所有并非做不到 , 实际上就是处于业余联赛水平 , 没必要去和英超西甲作比较。像是做出一个简易的温度显示器, 将家里温度传感器的具体数值给接入进去, 在电脑上把实时温度给显示出来, 如果温度超过了28度那就显示为红色, 要是低于这个温度就显示为绿色, 这样页面较为简单的便可用来制作。import tkinter as tk from tkinter import ttk class SensorMonitor: def __init__(self): self.root tk.Tk() self.root.title(家庭温度监测仪表盘) # 实时数值标签 self.temp_var tk.StringVar(value25.0℃) tk.Label(self.root, textvariableself.temp_var, font(Arial, 24)).pack(pady20) # 状态指示灯根据温度显示“红色”或者“绿色 self.canvas tk.Canvas(self.root, width100, height100) self.canvas.pack() self.indicator self.canvas.create_oval(20, 20, 80, 80, fillgreen) # 控制按钮 ttk.Button(self.root, text刷新数据, commandself.update_data).pack(pady10) def update_data(self): import random temp round(random.uniform(22.0, 30.0), 1) self.temp_var.set(f{temp}℃) color redif temp 28elsegreen self.canvas.itemconfig(self.indicator, fillcolor) app SensorMonitor() app.root.mainloop()此样的小GUI应用, 并不需要繁杂繁复的结构与UI, 仅仅只需二三十行代码, 用以应付便已足够。相对而言, PyQt宛如一位六边形战士, 其是以声名远扬的Qt框架搭建而成的接口, 具备齐全的控件, 拥有众多的模块, 有着完善的事件处理机制, 包含系统主题, 丰富多元的多媒体资源也具备, API接口同样不缺, 并且因其底层是基于C得以实现的, 所以速度以及稳定性处于一流水准, 甚至可以讲能够搭建任何现代化的GUI应用, 诸如大型商业软件就不在话下, 工业应用等同样也能进行搭建。诸如很卓著的、Adobe、OBS系列软件皆是由Qt予以开发的, 另外生态里的IDE、、乃是基于PyQt开发而成的, 并且与之结合得颇为优良。PyQt存在着它的不足之处, 鉴于其功能十分强大, 故而其体积颇为庞大, 并且依赖库数量众多, PyQt作为第三方库必须要额外进行安装, 大概有三四百兆, 要是你仅仅是开展的简单的GUI小应用, 配置PyQt就恰似高射炮打蚊子, 也是得不偿失的。其次, PyQt其功能强大, 具有众多API, 学习所需的时间成本颇高, 在使用之前, 必须妥善熟知它的架构与技巧, 诸如布局管理器、信号以及槽等, 并非简单之事。因为Qt属于商业软件, 进而使用正版之时还得去购买商业许可, 其门槛可不是小的呀。这是基于某种接口的, 该接口是基于C进行开发的, 并且它还是传统的核心GUI工具, 其控件十分丰富, 拥有活跃非凡的社区, 和PyQt类似, 不过却没有PyQt那么好用。最大优势在于夸平台能力突出, 尽可能运用目标操作系统的原生控件, 做得出类拔萃, 做基于MacOS的就仿若MacOS。讲了这般多, 目的在于表明, 没有必要把它跟PyQt拿来作比较, 二者使用的场景全然不一样, 差不多相当于两类不同的物种, 它们各自有着自身存在的价值。最后附一张三者对比的明细表供参考。大数据分析分享编程、数据分析、爬虫、人工智能等494篇原创内容公众号
返回列表