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
python实例属性没有init_处理init外部定义的实例属性的更好/更python方式?相关推荐
- java设计一个立方体类box_实例1: 设计一个立方体类Box,定义三个属性,分别是长,宽,高。定义二个方法,分别计算并输出立方体的体积和表面积。_学小易找答案...
[填空题]表达式 list(filter(lambda x:x>2, [0,1,2,3,0,0])) 的值为 _________ . [填空题]表达式 len(' 中国 '.encode('ut ...
- java 抽象 属性_在java中如何定义一个抽象属性示例详解
前言 本文主要给大家介绍的是在java中定义一个抽象属性的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍: Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给 ...
- java 抽象属性_怎样在java中定义一个抽象属性
[51CTO活动]8.26 带你深度了解清华大学.搜狗基于算法的IT运维实践与探索 Abstract关键字通常被用于类和方法,用来把某些行为的实现委托给子类.由于Java不支持抽象属性,如果你试图将类 ...
- Python 面向对象编程:类的创建与初始化、实例属性与方法、类属性与方法
1. 类的创建并实例化 类的定义:在Python中,类通过 class 关键字定义.按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的.下面是一 ...
- python装饰器setter_第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter...
上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一. 案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...
- python导入自定义文件_python引入导入自定义模块和外部文件的实例
项目中想使用以前的代码,或者什么样的需求致使你需要导入外部的包 如果是web 下,比如说django ,那么你新建一个app,把你需要导入的说用东东,都写到这个app中,然后在setting中的app ...
- python 外部参数过长_介绍python中slice参数过长的处理方法及实例
python教程栏目介绍slice参数过长的处理方法 很多小伙伴对于slice参数的概念理解停留在概念上,切片的参数有三个,分别是step .start .stop .因为参数的值也是多变的,所以我们 ...
- python的类和对象_Python面向对象之类和对象实例详解
本文实例讲述了Python面向对象之类和对象.分享给大家供大家参考,具体如下: 类和对象(1) 对象是什么? 对象=属性(静态)+方法(动态): 属性一般是一个个变量:方法是一个个函数: #类的属性 ...
- Python面对对象编程——对象、类详解及实例
Python中类与对象的初认识 1.Python 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的 ...
最新文章
- freeimage ubuntu安装
- 网站被降权后该进行检查哪些问题?
- 【java】简单的方式实现文本文件的读写
- c语言程序设计 第三版 哈工大,c语言程序设计 哈工大 苏小红 第三章习题
- python pytest
- Leetcode每日一题:402.remove-k-digits(移掉k位数字)
- rabbitmq 客户端golang实战
- 5个让IT开发效率提高200%的工具,最后一个很实用,你用过几个
- 关于C#中枚举与字符串与数字之间的转换
- 【机器人学习】平台并联机构matlab逆解
- px像素和dp像素密度区别
- 微信小程序添加体验成员,根据微信号搜索不到
- 谈逻辑与数学界线之淡化(修正版)
- Cannot connenct to relay host smtp.163.com (php邮件发送失败)
- 数据挖掘 NO.2 模型效果评估
- 首次申请测绘资质需要提交哪些材料?
- 结构动力学中的预应力模态分析 ——预应力模态
- 模式识别技术漫谈(1)
- post请求或get请求通过url传递参数
- 地质勘查土质分类图片_地质土质分类
热门文章
- 小程序通过三元运算符设置样式
- 硬盘底座linux,ORICO推出全透明硬盘底座、移动硬盘盒
- Datax-web版安装(含安装包)
- Mac版Endnote 20导入中文参考格式Chinese Std GBT7714 (numeric)
- 【翻译】代码指针完整性——Code Pointer Integrity
- 初试 Kubernetes 暴漏服务类型之 Nginx Ingress
- 深度定制django admin界面
- 在家看片利器,有Android App以及桌面应用(已开源)。
- 「Python|场景案例」如何获取音视频中声音片段的起止时间?
- ListView--QQ联系人样式