为列表中的每个名称创建选项卡

时间:2015-09-09 13:21:35

标签: python list user-interface tabs pyqt

我试图弄清楚如何实现我的代码以允许我根据字符串列表创建一个选项卡,并为每个选项卡输出该选项卡的正确相应参数/数据。

在我们继续前进这个计划的一点背景。该程序是一个文本/日志比较工具,我用它来比较设备的许多配置与默认/正确的配置。如果在比较时有任何与设备不正确的参数,它将输出不正确的参数,让我/用户知道。

但是为了这部分代码,我们只能说我们正在比较一些动物。

预览我目前拥有的GUI /程序: GUI Preview

基本上我的目标是让<Cat> <Dog> <Bird> <Tiger>所有标签都包含在他们自己的标签中。

我一直在使用的代码如下:

 with open(compareResults, 'wb') as fdout:
            while (count < (len(setNames))):
                for number, item in enumerate(lst, 0):
                    print setNames[count]
                    fdout.write('{}'.format(setNames[count]) + '\r\n')
                    for param, correct in correct_parameters.items():
                        if item.get(param) != correct:
                            print ('{} = {}'.format(param, item.get(param)))
                            fdout.write('{} = {}'.format(param, item.get(param)) + '\r\n')
                    count += 1

包含每只动物每个名字的列表是setNames[] 如果您想查看整个代码,请单击pastebin链接; http://pastebin.com/6v86qgj3

我的想法是,以某种方式创建一个setNames的循环,这将允许我为setNames中的每个名称创建一个选项卡,然后将结果输出到每个相应的名称。但是,我对PyQt并不是那么好,我仍然试图弄清楚如何制作单独的标签,如果我甚至可以创建它,而不必首先为标签或这种性质的东西制作一个功能。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先道歉,我只在这里安装了PySide,但它不应该有所作为。这是一个小部件的示例,其中包含由数组创建的选项卡:

from PySide import QtCore, QtGui

class Window(QtGui.QWidget):
    def __init__(self, parent = None):
        super(Window, self).__init__(parent)

        # Create a QTabWidget where all the tabs will be held
        self.myTabs = QtGui.QTabWidget()

        # Loop through our animal names
        setNames = ['Cat', 'Dog', 'Bird', 'Tiger']
        for tabName in setNames:
            # Each tab needs its own widget, so let's create one with a label
            tabWidget = QtGui.QWidget()
            tabLabel = QtGui.QLabel('Hello! I am a {0}.'.format(tabName) )

            # Set the tab widget's layout
            tabLayout = QtGui.QVBoxLayout()
            tabLayout.addWidget(tabLabel)
            tabWidget.setLayout(tabLayout)

            # Create the tab
            self.myTabs.addTab(tabWidget, tabName)

        # Set the main layout
        mainLayout = QtGui.QVBoxLayout()
        mainLayout.addWidget(self.myTabs)
        self.setLayout(mainLayout)

        # Resize our window and show it
        self.resize(300, 300)
        self.show()

win = Window()

你可以看到它相当直接。如果您需要再次访问标签的小部件,可以使用QTabWidget.currentWidget()QTabWidget.widget(<index>)