为列表中的每个名称创建选项卡
Creating tabs for each name in a list
我想弄清楚如何实现我的代码以允许我基于字符串列表创建选项卡并输出每个选项卡以及该选项卡的正确对应 parameters/data。
在我们继续之前先了解一下这个程序的背景知识。该程序是一个 text/log 比较工具,我用它来将设备的许多配置与 default/correct 配置进行比较。如果在比较时有任何参数与设备不正确,它将输出不正确的参数让 me/user 知道。
但是为了这部分代码,我们只说我们正在比较一些动物。
这是我目前拥有的预览 GUI/Program:
基本上我的目标是让 <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 link; http://pastebin.com/6v86qgj3
我的想法是以某种方式创建一个带有 setNames
的循环,这将允许我为 setNames
中的每个名称创建一个选项卡,然后将结果输出到每个相应的名称。但是,我对 PyQt 不是很好,我仍在尝试弄清楚如何制作单独的选项卡,如果我什至可以创建它而不必首先为选项卡或类似性质的东西创建功能。任何帮助将不胜感激。
首先抱歉,我这里只安装了 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>)
.
我想弄清楚如何实现我的代码以允许我基于字符串列表创建选项卡并输出每个选项卡以及该选项卡的正确对应 parameters/data。
在我们继续之前先了解一下这个程序的背景知识。该程序是一个 text/log 比较工具,我用它来将设备的许多配置与 default/correct 配置进行比较。如果在比较时有任何参数与设备不正确,它将输出不正确的参数让 me/user 知道。
但是为了这部分代码,我们只说我们正在比较一些动物。
这是我目前拥有的预览 GUI/Program:
基本上我的目标是让 <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 link; http://pastebin.com/6v86qgj3
我的想法是以某种方式创建一个带有 setNames
的循环,这将允许我为 setNames
中的每个名称创建一个选项卡,然后将结果输出到每个相应的名称。但是,我对 PyQt 不是很好,我仍在尝试弄清楚如何制作单独的选项卡,如果我什至可以创建它而不必首先为选项卡或类似性质的东西创建功能。任何帮助将不胜感激。
首先抱歉,我这里只安装了 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>)
.