目前,我正在使用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

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

  1. java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...

    [填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...

  2. java 抽象 属性_在java中如何定义一个抽象属性示例详解

    前言 本文主要给大家介绍的是在java中定义一个抽象属性的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给 ...

  3. java 抽象属性_怎样在java中定义一个抽象属性

    [51CTO活动]8.26 带你深度了解清华大学.搜狗基于算法的IT运维实践与探索 Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给子类.由于Java不支持抽象属性,如果你试图将类 ...

  4. Python 面向对象编程:类的创建与初始化、实例属性与方法、类属性与方法

    1. 类的创建并实例化 类的定义:在Python中,类通过 class 关键字定义.按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的.下面是一 ...

  5. python装饰器setter_第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter...

    上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一.    案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...

  6. python导入自定义文件_python引入导入自定义模块和外部文件的实例

    项目中想使用以前的代码,或者什么样的需求致使你需要导入外部的包 如果是web 下,比如说django ,那么你新建一个app,把你需要导入的说用东东,都写到这个app中,然后在setting中的app ...

  7. python 外部参数过长_介绍python中slice参数过长的处理方法及实例

    python教程栏目介绍slice参数过长的处理方法 很多小伙伴对于slice参数的概念理解停留在概念上,切片的参数有三个,分别是step .start .stop .因为参数的值也是多变的,所以我们 ...

  8. python的类和对象_Python面向对象之类和对象实例详解

    本文实例讲述了Python面向对象之类和对象.分享给大家供大家参考,具体如下: 类和对象(1) 对象是什么? 对象=属性(静态)+方法(动态): 属性一般是一个个变量:方法是一个个函数: #类的属性 ...

  9. Python面对对象编程——对象、类详解及实例

    Python中类与对象的初认识 1.Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的 ...

最新文章

  1. freeimage ubuntu安装
  2. 网站被降权后该进行检查哪些问题?
  3. 【java】简单的方式实现文本文件的读写
  4. c语言程序设计 第三版 哈工大,c语言程序设计 哈工大 苏小红 第三章习题
  5. python pytest
  6. Leetcode每日一题:402.remove-k-digits(移掉k位数字)
  7. rabbitmq 客户端golang实战
  8. 5个让IT开发效率提高200%的工具,最后一个很实用,你用过几个
  9. 关于C#中枚举与字符串与数字之间的转换
  10. 【机器人学习】平台并联机构matlab逆解
  11. px像素和dp像素密度区别
  12. 微信小程序添加体验成员,根据微信号搜索不到
  13. 谈逻辑与数学界线之淡化(修正版)
  14. Cannot connenct to relay host smtp.163.com (php邮件发送失败)
  15. 数据挖掘 NO.2 模型效果评估
  16. 首次申请测绘资质需要提交哪些材料?
  17. 结构动力学中的预应力模态分析 ——预应力模态
  18. 模式识别技术漫谈(1)
  19. post请求或get请求通过url传递参数
  20. 地质勘查土质分类图片_地质土质分类

热门文章

  1. 小程序通过三元运算符设置样式
  2. 硬盘底座linux,ORICO推出全透明硬盘底座、移动硬盘盒
  3. Datax-web版安装(含安装包)
  4. Mac版Endnote 20导入中文参考格式Chinese Std GBT7714 (numeric)
  5. 【翻译】代码指针完整性——Code Pointer Integrity
  6. 初试 Kubernetes 暴漏服务类型之 Nginx Ingress
  7. 深度定制django admin界面
  8. 在家看片利器,有Android App以及桌面应用(已开源)。
  9. 「Python|场景案例」如何获取音视频中声音片段的起止时间?
  10. ListView--QQ联系人样式