Oop 面向对象实例化pythonic实践
我有下面的代码,我计划在同一个“导入”中创建几个类。我希望实例化每个类,并通过我正在制作的小部件获得一个返回值 这根本不是一个PyQt问题,更多的是一个“良好实践”问题,因为我将为每个小部件创建一个类 我应该创建返回创建的小部件的函数吗?如果是,如何创建?如果直接实例化这个类是我所追求的最好的方法,我如何确保它是困难的 我希望能做一些像Oop 面向对象实例化pythonic实践,oop,pyqt,python,Oop,Pyqt,Python,我有下面的代码,我计划在同一个“导入”中创建几个类。我希望实例化每个类,并通过我正在制作的小部件获得一个返回值 这根本不是一个PyQt问题,更多的是一个“良好实践”问题,因为我将为每个小部件创建一个类 我应该创建返回创建的小部件的函数吗?如果是,如何创建?如果直接实例化这个类是我所追求的最好的方法,我如何确保它是困难的 我希望能做一些像 tabs = wqTabWidget( ['firstTab', 'Second', 'Last Tab'] ) 或者(哪种做法更好) 这是到目前为止我的班级
tabs = wqTabWidget( ['firstTab', 'Second', 'Last Tab'] )
或者(哪种做法更好)
这是到目前为止我的班级
from PyQt4 import QtCore as qc
from PyQt4 import QtGui as qg
class wqTabWidget(qg.QTabWidget):
def __init__(self, *args):
apply(qg.QTabWidget.__init__,(self, ))
tabList = []
tabNames = args[0]
for name in tabNames:
tabWidget = qg.QWidget()
self.addTab(tabWidget, name)
tabList.append( { name:tabWidget } )
print 'hi'
if __name__ == '__main__':
app = qg.QApplication(sys.argv)
window = wqTabWidget(['hi', 'there', 'and', 'stuff'])
window.show()
app.exec_()
如果选项卡列表可以在运行时更改,则将决定答案。如果这个小部件真的只支持添加一组选项卡,而不支持更改或追加新的选项卡,那么选项卡列表应该来自初始值设定项。否则,您还应该添加一个方法来完成此工作。考虑<代码> qLabor <代码>控件,它可以在初始化器中设置标签文本,并通过<代码> SETTEX/<代码>方法。 其他代码创意提示 您的初始值设定项的参数有点混乱,因为您接受任意数量的参数,但只对第一个参数执行操作,并希望它是字符串列表。清晰的论据清单很重要 使用
apply
调用基类初始值设定项是不必要的。将代码更改为simplyqg.QTabWidget.\uuuu init\uuuuu(self)
在创建PyQt小部件时,我几乎总是倾向于允许“parent”参数,即使我知道小部件将成为顶级小部件。这就是所有内置Pyqt方法所做的,并且感觉像是一个很好的实践
我也看不出存储选项卡列表的原因,每个选项卡都是一个元素字典。我想您不需要保留自己的选项卡列表和选项卡名称。QTabWidget可以回答有关内容的所有问题
如果我将这个示例代码弯曲到我自己的首选项,它将如下所示
from PyQt4 import QtCore as qc
from PyQt4 import QtGui as qg
class wqTabWidget(qg.QTabWidget):
def __init__(self, parent, tabNames):
qg.QTabWidget.__init__(self, parent)
self.createTabs(tabNames)
def createTabs(tabNames):
for name in tabNames:
tabWidget = qg.QWidget()
self.addTab(tabWidget, name)
if __name__ == '__main__':
app = qg.QApplication(sys.argv)
window = wqTabWidget(None, ['hi', 'there', 'and', 'stuff'])
window.show()
app.exec_()
如果选项卡列表可以在运行时更改,则将决定答案。如果这个小部件真的只支持添加一组选项卡,而不支持更改或追加新的选项卡,那么选项卡列表应该来自初始值设定项。否则,您还应该添加一个方法来完成此工作。考虑<代码> qLabor <代码>控件,它可以在初始化器中设置标签文本,并通过<代码> SETTEX/<代码>方法。 其他代码创意提示 您的初始值设定项的参数有点混乱,因为您接受任意数量的参数,但只对第一个参数执行操作,并希望它是字符串列表。清晰的论据清单很重要 使用
apply
调用基类初始值设定项是不必要的。将代码更改为simplyqg.QTabWidget.\uuuu init\uuuuu(self)
在创建PyQt小部件时,我几乎总是倾向于允许“parent”参数,即使我知道小部件将成为顶级小部件。这就是所有内置Pyqt方法所做的,并且感觉像是一个很好的实践
我也看不出存储选项卡列表的原因,每个选项卡都是一个元素字典。我想您不需要保留自己的选项卡列表和选项卡名称。QTabWidget可以回答有关内容的所有问题
如果我将这个示例代码弯曲到我自己的首选项,它将如下所示
from PyQt4 import QtCore as qc
from PyQt4 import QtGui as qg
class wqTabWidget(qg.QTabWidget):
def __init__(self, parent, tabNames):
qg.QTabWidget.__init__(self, parent)
self.createTabs(tabNames)
def createTabs(tabNames):
for name in tabNames:
tabWidget = qg.QWidget()
self.addTab(tabWidget, name)
if __name__ == '__main__':
app = qg.QApplication(sys.argv)
window = wqTabWidget(None, ['hi', 'there', 'and', 'stuff'])
window.show()
app.exec_()