python实例属性没有init_处理init外部定义的实例属性的更好/更python方式?

目前,我正在使用pyqt构建一个非常简单的数据绘制UI,并尝试将UI不同部分的代码块分割成函数,以帮助代码清晰和调试。因为我正在初始化init之外的许多实例属性,但我想知道什么是确保我符合PEP8的最佳方法。在

现在我通过在init中设置everything=None来处理这个问题,然后在适当的地方继续我的初始化。我只是想知道有没有一种更好的/更像Python的方式来处理这个问题。在

我只是想知道是否有一个更好的解决方案,因为这似乎是一个更混乱的例子。在

代码:def __init__(self):

QtWidgets.QWidget.__init__(self)

#call to setup_ui to generate default window with associated widgets

(self.windowLayout, self.leftColumn,

self.treeWidget, self.tabWidget, self.line, self.plotWidget) = self.setup_ui(self)

##The following are a number of buttons and layouts all used to create the Image and Plot tab.

##See the "create_import_and_plot_tab" function for their various initializations

(self.Import_and_Plot_tab, self.import_plot_layout, self.loadDataFolder_btn,

self.clearChecked_btn, self.createPlot_btn, self.addToPlot_btn, self.plotNum_dropdown,

self.clearPlot_dropdown, self.addPlotLayout, self.clearPlot_btn, self.clearPlotLayout) = (None, None, None,

None, None, None,

None, None, None,

None, None)

##The following are a number of buttons and layouts all used to create the Markers tab.

##See the "create_markers_tab" function for their various initializations

(self.Markers_tab, self.markers_tab_layout, self.addMarker_btn, self.markersPlot_dropdown) = (None, None,

None, None)

def setup_ui(self, form):

form.resize(1742, 988)

form.setContextMenuPolicy(QtCore.Qt.PreventContextMenu)

form.setWindowTitle("Data Viewer")

pg.setConfigOption('background', 'w')

pg.setConfigOption('foreground', 'k')

self.windowLayout = QtWidgets.QHBoxLayout(form)

self.windowLayout.setObjectName("windowLayout")

self.leftColumn = QtWidgets.QVBoxLayout()

self.leftColumn.setObjectName("leftColumnLayout")

self.treeWidget = QtWidgets.QTreeWidget(form)

self.treeWidget.setObjectName("treeWidget")

self.treeWidget.headerItem().setText(0, "Data")

self.tabWidget = QtWidgets.QTabWidget(form)

tab_widget_size_policy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)

self.tabWidget.setSizePolicy(tab_widget_size_policy)

self.tabWidget.setMinimumSize(QtCore.QSize(200, 100))

self.tabWidget.setObjectName("tabWidget")

self.tabWidget.addTab(self.create_import_and_plot_tab(form), "Import && Plot")

self.tabWidget.addTab(self.create_markers_tab(form), "Markers")

self.leftColumn.addWidget(self.treeWidget)

self.leftColumn.addWidget(self.tabWidget)

self.line = QtWidgets.QFrame(form)

self.line.setFrameShape(QtWidgets.QFrame.VLine)

self.line.setFrameShadow(QtWidgets.QFrame.Sunken)

self.line.setObjectName("line")

self.plotWidget = pg.GraphicsLayoutWidget(form)

self.plotWidget.setObjectName("plotWidget")

self.windowLayout.addLayout(self.leftColumn)

self.windowLayout.addWidget(self.line)

self.windowLayout.addWidget(self.plotWidget, QtCore.Qt.AlignCenter)

return self.windowLayout, self.leftColumn, self.treeWidget, self.tabWidget, self.line, self.plotWidget

def create_import_and_plot_tab(self, form):

self.Import_and_Plot_tab = QtWidgets.QWidget()

self.Import_and_Plot_tab.setObjectName("Import_and_Plot_tab")

self.import_plot_layout = QtWidgets.QVBoxLayout(self.Import_and_Plot_tab)

self.import_plot_layout.setObjectName("import_plot_layout")

self.loadDataFolder_btn = QtWidgets.QPushButton("Load Data Folder", form)

self.loadDataFolder_btn.setObjectName("loadDataFolder_btn")

self.loadDataFolder_btn.clicked.connect(self.load_data_folder)

self.loadDataFolder_btn.clicked.connect(self.update_treeWidget)

self.clearChecked_btn = QtWidgets.QPushButton("Clear Check Boxes", form)

self.clearChecked_btn.setObjectName("clearChecked_btn")

self.clearChecked_btn.clicked.connect(self.clear_checked)

self.createPlot_btn = QtWidgets.QPushButton("New Plot", form)

self.createPlot_btn.setObjectName("createPlot_btn")

self.createPlot_btn.clicked.connect(self.add_new_plot)

self.addToPlot_btn = QtWidgets.QPushButton("Add plot to:", form)

self.addToPlot_btn.setObjectName("addToPlot_btn_btn")

self.addToPlot_btn.clicked.connect(self.add_to_plot)

self.plotNum_dropdown = QtWidgets.QComboBox(form)

self.plotNum_dropdown.setObjectName("plotNum_dropdown")

self.clearPlot_dropdown = QtWidgets.QComboBox(form)

self.clearPlot_dropdown.setObjectName("clearPlot_dropdown")

self.clearPlot_dropdown.addItem("All")

self.addPlotLayout = QtWidgets.QHBoxLayout()

self.addPlotLayout.setObjectName("addPlotLayout")

self.addPlotLayout.addWidget(self.addToPlot_btn)

self.addPlotLayout.addWidget(self.plotNum_dropdown)

self.clearPlot_btn = QtWidgets.QPushButton("Clear:", form)

self.clearPlot_btn.setObjectName("clearPlot_btn")

self.clearPlot_btn.clicked.connect(self.clear_plot)

self.clearPlotLayout = QtWidgets.QHBoxLayout()

self.clearPlotLayout.setObjectName("clearPlotLayout")

self.clearPlotLayout.addWidget(self.clearPlot_btn)

self.clearPlotLayout.addWidget(self.clearPlot_dropdown)

self.import_plot_layout.addWidget(self.loadDataFolder_btn)

self.import_plot_layout.addWidget(self.clearChecked_btn)

self.import_plot_layout.addWidget(self.createPlot_btn)

self.import_plot_layout.addLayout(self.addPlotLayout)

self.import_plot_layout.addLayout(self.clearPlotLayout)

return self.Import_and_Plot_tab

def create_markers_tab(self, form):

self.Markers_tab = QtWidgets.QWidget()

self.Markers_tab.setObjectName("Markers_tab")

self.markers_tab_layout = QtWidgets.QVBoxLayout(self.Markers_tab)

self.markers_tab_layout.setObjectName("markers_tab_layout")

self.addMarker_btn = QtWidgets.QPushButton("Add Marker", form)

self.addMarker_btn.setObjectName("addMarker_btn")

self.addMarker_btn.clicked.connect(self.add_marker)

self.markersPlot_dropdown = QtWidgets.QComboBox(form)

self.markersPlot_dropdown.setObjectName("markersPlot_dropdown")

self.markersPlot_dropdown.addItem("All")

self.markers_tab_layout.addWidget(self.addMarker_btn)

self.markers_tab_layout.addWidget(self.markersPlot_dropdown)

return self.Markers_tab

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值