from PyQt5 import QtWidgets, QtGui
from abc import ABC, abstractmethod
# 定义抽象工厂类
class AbstractFactory(ABC):
@abstractmethod
def create_button(self):
pass
@abstractmethod
def create_label(self):
pass
# 定义具体工厂类
class WindowsFactory(AbstractFactory):
def create_button(self):
return QtWidgets.QPushButton("Windows Button")
def create_label(self):
return QtWidgets.QLabel("Windows Label")
class MacFactory(AbstractFactory):
def create_button(self):
return QtWidgets.QPushButton("Mac Button")
def create_label(self):
return QtWidgets.QLabel("Mac Label")
# 定义窗口类
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, factory):
super().__init__()
self.factory = factory
button = self.factory.create_button()
label = self.factory.create_label()
layout = QtWidgets.QVBoxLayout()
layout.addWidget(button)
layout.addWidget(label)
widget = QtWidgets.QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
# 选择具体工厂
factory = WindowsFactory()
window = MainWindow(factory)
window.show()
sys.exit(app.exec_())
用pyQT写一个运用到抽象工厂模式的界面
最新推荐文章于 2024-05-05 15:22:22 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)