1.选项
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
class RightFrame(QtWidgets.QFrame):
def __init__(self, **kwargs):
super().__init__(**kwargs)
box_right = QtWidgets.QHBoxLayout()
self.label_choice = QtWidgets.QLabel(self)
self.label_choice.setText('Просто текст')
box_right.addWidget(self.label_choice, 0, QtCore.Qt.AlignCenter)
self.setLayout(box_right)
class Menu(QtWidgets.QMenuBar):
def __init__(self, **kwargs):
super().__init__(**kwargs)
file_menu = self.addMenu('File')
close_file = QtWidgets.QAction('Закрыть программу', self)
close_file.setStatusTip('Close test file')
close_file.triggered.connect(sys.exit)
file_menu.addAction(close_file)
class MainWindows(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setFixedSize(600, 400)
self.setWindowTitle('Test')
self.setFont(QtGui.QFont('Times New Roman', 35))
self.setMenuBar(Menu())
self.setCentralWidget(RightFrame())
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
ma = MainWindows()
ma.show()
sys.exit(app.exec_())
选项 2
import sys
from PyQt5 import QtCore, QtWidgets, QtGui
class MainWindows(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setFixedSize(600, 400)
self.setWindowTitle('Test')
self.setFont(QtGui.QFont('Times New Roman', 35))
self.frame_main_windows()
self.menu_bar()
def menu_bar(self):
menu_bar = self.menuBar()
file_menu = menu_bar.addMenu('File')
close_file = QtWidgets.QAction('Закрыть программу', self)
close_file.setStatusTip('Close test file')
close_file.triggered.connect(lambda: self.close())
file_menu.addAction(close_file)
self.statusBar()
def frame_main_windows(self):
self.right_main_frame = QtWidgets.QFrame(self)
self.setCentralWidget(self.right_main_frame)
box_right = QtWidgets.QHBoxLayout()
self.label_choice = QtWidgets.QLabel()
self.label_choice.setText('Просто текст')
box_right.addWidget(self.label_choice, 0, QtCore.Qt.AlignCenter)
self.right_main_frame.setLayout(box_right)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
ma = MainWindows()
ma.show()
sys.exit(app.exec_())
在编写大型应用程序时,使用选项 1 或 2 是否有效、正确。
我认为选项 1 更像是 python。
如果第一个清单中存在错误,它们将更容易纠正。
从易于维护和对项目未来的贡献的角度来看,如果它发展(模块数量会增加),那么您需要选择选项 1。我建议您阅读“清洁代码”,R. Martin,他谈了很多关于重构以及编写代码的价值。
而不是第二个而不是第一个,因为它更容易。为什么要创建一个只有构造函数的类,对于这样的任务,一个普通的函数就足够了。