
Qt闲话(2)
发布日期:2021-05-07 14:29:53
浏览次数:16
分类:精选文章
本文共 2804 字,大约阅读时间需要 9 分钟。
初学Python,了解到的第一个知识便是:Python是一门面向对象编程的语言。常量、变量、函数、类都是对象,特别是函数作为一个对象调用实现了大部分需求。也是一种比较容易理解的方式。
一直到学习了PyQt5的代码,才明白什么是面向对象编程。前面所理解的只能算是面向函数编程,PyQt5才是真正的面向对象。
这里所言面向函数编程或者面向对象编程都是我个人知识体系里的理解,因为不是科班出身,如果跟正统定义有误,各位多多包含,总归,我这么理解对自己的知识体系很有帮助。
面向函数编程可以更好的理解过程,但是对于实现展示性质的界面制作来说,还是太过冗余了。过程是一步一步进行的,你可以很好的在逻辑上搞清楚,但是当你想把他们呈现出来的时候会觉得无法清晰的分类。
视觉展示(GUI)分解下来是客观存在的元素:线、曲线、圆、图片、轴、点、颜色、粗细、长短…这些一个个的才是“对象”。一行代码直接呈现一张图,这才是面向对象编程。类似现实世界中的组合,一行代码实现一个汽车底盘、一行代码实现一个轮子…这样一个个对象被代码实现组合成所需程序。
面向函数编程,有助于理解逻辑关系,是一种重视过程衔接的理念;
面向对象编程,有助于item组合,是一种便于现实呈现的理念。
# 面向函数编程import sysfrom PyQt5.QtWidgets import *app = QApplication(sys.argv)win = QWidget()win.show()sys.exit(app.exec_())
# 面向对象编程import sysfrom PyQt5.QtWidgets import *class gui(): def __init__(self): self.initUi() # 类初始化 def initUi(self): self.win = QWidget() self.win.setWindowTitle('what the fuck')if __name__ == '__main__': app = QApplication(sys.argv) gui = gui() gui.win.show() print(gui,type(gui)) sys.exit(app.exec_())
-
菜单栏里的秘密
这是PyCharm的菜单栏及选项,以前并不觉得横向选择的"file"、“eidt”…于纵向的"New"、“Save As”…之类的有什么区别,只当后者是前者的子选项,QT之后才明白,前者是QWidget类的属性(menu),后者是QAction类。
# 添加菜单栏、状态栏import sysfrom PyQt5.QtWidgets import *class GUI(QMainWindow): def __init__(self): super().__init__() self.iniUI() def iniUI(self): self.setWindowTitle("what the fuck") self.statusBar().showMessage("文本状态栏") self.resize(400, 300) # 创建一个菜单栏 menu = self.menuBar() # 创建两个个菜单 file_menu = menu.addMenu("文件") file_menu.addSeparator() edit_menu = menu.addMenu('修改') if __name__ == '__main__': app = QApplication(sys.argv) gui = GUI() gui.show() sys.exit(app.exec_())
运行结果:
# 添加菜单栏、状态栏import sysfrom PyQt5.QtWidgets import *class GUI(QMainWindow): def __init__(self): super().__init__() self.iniUI() def iniUI(self): self.setWindowTitle("what the fuck") self.statusBar().showMessage("文本状态栏") self.resize(400, 300) # 创建一个菜单栏 menu = self.menuBar() # 创建两个个菜单 file_menu = menu.addMenu("文件") file_menu.addSeparator() edit_menu = menu.addMenu('修改') # 创建第一个行为QAction action_1 = QAction('打开文件',self) # 更新对应的状态栏 action_1.setStatusTip('状态栏显示打开新文件') # 将这个行为添加到菜单 file_menu.addAction(action_1) # 创建第二个行为 action_2 = QAction('关闭窗口',self) # 更新对应的状态栏 action_2.setStatusTip('状态栏又变了,这个按钮能关闭窗口') # 将这个行为也添加到菜单中 file_menu.addAction(action_2) # 添加关闭程序 action_2.triggered.connect(self.close) # 对这个action设置快捷键 action_2.setShortcut('Ctrl+W') if __name__ == '__main__': app = QApplication(sys.argv) gui = GUI() gui.show() sys.exit(app.exec_())
显示如下:
-
Reference
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年03月27日 05时46分05秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
1045 Favorite Color Stripe
2021-05-09
B. Spreadsheets(进制转换,数学)
2021-05-09
等和的分隔子集(DP)
2021-05-09
基础练习 十六进制转八进制(模拟)
2021-05-09
L - Large Division (大数, 同余)
2021-05-09
39. Combination Sum
2021-05-09
41. First Missing Positive
2021-05-09
80. Remove Duplicates from Sorted Array II
2021-05-09
83. Remove Duplicates from Sorted List
2021-05-09
410. Split Array Largest Sum
2021-05-09
开源项目在闲鱼、b 站上被倒卖?这是什么骚操作?
2021-05-09
Vue3发布半年我不学,摸鱼爽歪歪,哎~就是玩儿
2021-05-09
《实战java高并发程序设计》源码整理及读书笔记
2021-05-09
Java开源博客My-Blog(SpringBoot+Docker)系列文章
2021-05-09
程序员视角:鹿晗公布恋情是如何把微博搞炸的?
2021-05-09
【JavaScript】动态原型模式创建对象 ||为何不能用字面量创建原型对象?
2021-05-09
Linux应用-线程操作
2021-05-09
多态体验,和探索爷爷类指针的多态性
2021-05-09