Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在QGridLayout中索引小部件_Python_Layout_Pyside_Qgridlayout - Fatal编程技术网

Python 如何在QGridLayout中索引小部件

Python 如何在QGridLayout中索引小部件,python,layout,pyside,qgridlayout,Python,Layout,Pyside,Qgridlayout,我正试图用Python3在PySide中创建一个小部件矩阵。创建工作已经开始,但我无法更新小部件 我创建一个QGridLayout,然后添加带有初始文本的标签小部件。在此之后,我构建了最后一个布局的30个实例的列表。然后,我只需将每个布局添加到一个新的QGridLayout中,然后使用小部件创建一个布局矩阵 创建工作正常,但在那之后,我不能再索引或指向布局的每个小部件。我怎么能这么做 我的问题是当我尝试做以下事情时: self.userSpace[i].userHeartRate.setText

我正试图用Python3在PySide中创建一个小部件矩阵。创建工作已经开始,但我无法更新小部件

我创建一个
QGridLayout
,然后添加带有初始文本的标签小部件。在此之后,我构建了最后一个布局的30个实例的列表。然后,我只需将每个布局添加到一个新的
QGridLayout
中,然后使用小部件创建一个布局矩阵

创建工作正常,但在那之后,我不能再索引或指向布局的每个小部件。我怎么能这么做

我的问题是当我尝试做以下事情时:

self.userSpace[i].userHeartRate.setText('lala')
我得到:

错误:userSpace没有userHeartRate属性

代码:


您可以使用其他数据结构跟踪小部件,也可以查看nexted布局的子级以获得感兴趣的小部件。现在我所做的是将每个小部件放在一个列表中,它可以工作,但不确定这是否是最好的方式,是吗?最好的方式取决于您的具体问题,您想用这些小部件做什么,以及需要多久查找一次。将它们保存在一个附加列表中肯定不是访问它们的最糟糕方式。您可以使用其他数据结构跟踪小部件,也可以查看nexted布局的子级以获取感兴趣的小部件。现在我正在做的是将每个小部件放在一个列表中,它可以工作,但不确定它是否是最好的方式,是吗?最好的方法取决于你的具体问题、你想用这些小部件做什么以及你需要多久找到它们一次。将它们保存在一个附加列表中肯定不是访问它们的最糟糕方式。
class MainWindow(PySide.QtGui.QWidget):
    # Constructor function
    def __init__(self):
        super(MainWindow, self).__init__()

        self.socios=[]

        #Cuadritos
        self.userSpace = []        

        #Matriz
        self.gridLayout = PySide.QtGui.QGridLayout(self)

        self.initGUI()

    def initGUI(self):
        self.setGeometry(0, 0, 1920, 1080)
        self.setMinimumHeight(1080)
        self.setMinimumWidth(1920)
        self.setMaximumHeight(1080)
        self.setMaximumWidth(1920)

        #Layout creation
        self.setGroupLayout() 

        #Allways show at last 
        self.show()

    #general users layout
    def setGroupLayout(self):
        for i in range(1,31):
            self.socios.append(i)

        #Creates a list of gridlayouts
        for i, socio in enumerate(self.socios):        
            self.userSpace.append(self.setUserLayout(str(socio)))

            #This is the problem, I cannot index any widget in the layout
            self.userSpace[i].userHeartRate.setText('lala') #This is not working
            #userSpace doesn't have userHeartRate attribute

         #Later I'll add each gridlayout inside another gridlayout to create a matrix of the first layouts   

        for vertical in range (0,5):
            for horizontal in range(0,6):
                if usrNumMain == tempCounter:
                    break
                else:
                    self.gridLayout.addLayout(self.userSpace[tempCounter], vertical, horizontal, PySide.QtCore.Qt.AlignCenter)                    

                    tempCounter = tempCounter + 1                    

    def setUserLayout(self, name):

        userGridLayout = PySide.QtGui.QGridLayout()

        #User Name widget
        userName = PySide.QtGui.QLabel(name)
        userHeartRate = PySide.QtGui.QLabel("FC")
        userGridLayout.addWidget(userName, 0, 1, 1, 4)
        userGridLayout.addWidget(userHeartRate, 3, 1, 1, 2)

        return userGridLayout