为什么要面向对象编程?

因为在写软件过程中,常常会遇到各种重复的区域,例如菜单栏、功能区等。有的子界面也需要这写东西,加入复制粘贴这些代码,就会造成代码量很大,并且冗余不好维护。

那么就可以用面向对象的思想,把重复的东西进行封装。这样每次调用类就可以再现这些代码。

如何实现代码的封装?

原始的代码:

# -*- coding: UTF-8 -*-
from PyQt5.Qt import *
import sys

# 创建一个应用
app = QApplication(sys.argv)

# 创建一个QWidget类的窗口
window = QWidget()
window.setWindowTitle("人生苦短,我用Python")  # 标题
window.resize(500, 500)                     # 窗口的大小
window.move(400, 200)                       # 窗口初次显示的位置

# 创建标签
label = QLabel(window)
label.setText("Hello,PyQt")                # 标签里的内容
label.move(200, 200)                        # 标签在窗口的位置

label2 = QLabel(window)
label2.setText("Hello,PyQt")                # 标签里的内容
label2.move(400, 200)                        # 标签在窗口的位置

window.show()                               # 显示窗口,不然啥也没有

sys.exit(app.exec_())  

第一步封装,定义一个class:

# -*- coding: UTF-8 -*-
from PyQt5.Qt import *
import sys


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QLabel学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        label = QLabel(self)
        label.setText("Hello,PyQt")  # 标签里的内容
        label.move(200, 200)  # 标签在窗口的位置

        label2 = QLabel(self)
        label2.setText("Hello,PyQt")  # 标签里的内容
        label2.move(400, 200)  # 标签在窗口的位置


# 创建一个应用
app = QApplication(sys.argv)

window = Window()
window.show()  # 显示窗口,不然啥也没有

sys.exit(app.exec_())

第二步,新建一个脚本文件,例如myclass.py

写入内容,把自定义的class放进去:

# -*- coding: UTF-8 -*-
from PyQt5.Qt import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QLabel学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        label = QLabel(self)
        label.setText("Hello,PyQt")  # 标签里的内容
        label.move(200, 200)  # 标签在窗口的位置

        label2 = QLabel(self)
        label2.setText("Hello,PyQt")  # 标签里的内容
        label2.move(400, 200)  # 标签在窗口的位置

最后将原始代码改为:

# -*- coding: UTF-8 -*-
from PyQt5.Qt import *
import sys


from myclass import Window

# 创建一个应用
app = QApplication(sys.argv)

window = Window()
window.show()  # 显示窗口,不然啥也没有

sys.exit(app.exec_())

这样就非常简洁,也便于维护:

代码的效果

要是经常使用的话,还可以新建一个活动模板。过程和上一节的差不多,这里不再赘述:

在PyCharm中设置一个活动实时PyQt5的模板Live Templates_PyQt5学习笔记(五)

模板的内容:

# -*- coding: UTF-8 -*-
from PyQt5.Qt import *

class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("$Object$学习")
        self.resize(500, 500)
        self.setup_ui()

    def setup_ui(self):
        $YOURCODE$

# 方便在模板里进行调试
if __name__ == "__main__":
    import  sys
    app= QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

配置面向对象的模板


博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/PyQtObject.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 06 月 16 日
如果觉得我的文章对你有用,请随意赞赏