Сценарий: мне нужно поместить поле со списком в четвертый столбец в qcolumnview, чтобы пользователь мог выбрать ВКЛ или ВЫКЛ.
Описание: в будущем он будет сохранен как файл XML, чтобы пользователь мог выбрать параметр и создать собственный файл XML. Может кто-нибудь сказать мне, как мне это сделать?
import sys
from PyQt4 import QtGui, QtCore
class xml_creator(QtGui.QMainWindow):
def __init__(self):
super(xml_creator, self).__init__()
self.initUI()
def initUI(self):
column_view = QtGui.QColumnView(self)
self.setCentralWidget(column_view)
m_model = QtGui.QStandardItemModel()
column_view.setModel(m_model)
column_view.setAlternatingRowColors(True)
self.test_variables = {}
self.test_variables['OPTION_1'] = ['OFF', 'ON']
self.test_variables['OPTION_2'] = ['OFF', 'ON']
self.iq_xml = {}
self.iq_xml['TEST_1'] = {}
self.iq_xml['TEST_1']['Test_case_1'] = self.test_variables
for x in self.iq_xml:
if not self.iq_xml[x]:
continue
parent = QtGui.QStandardItem(x)
parent.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable)
for y in self.iq_xml[x]:
if not self.iq_xml[x][y]:
continue
child0 = QtGui.QStandardItem(y)
child0.setFlags(QtCore.Qt.ItemIsEnabled)
parent.appendRow(child0)
for z in self.iq_xml[x][y]:
if not self.iq_xml[x][y][z]:
continue
grand_child = QtGui.QStandardItem(z)
grand_child.setFlags(QtCore.Qt.ItemIsEnabled)
child0.appendRow(grand_child)
value = self.iq_xml[x][y][z]
grand_grand_child = QtGui.QStandardItem(str(value))
grand_grand_child.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsEditable)
grand_child.appendRow(grand_grand_child)
column_view.model().appendRow(parent)
column_view.setColumnWidths([200, 200, 200, 100])
self.setGeometry(300, 300, 1000, 300)
self.setWindowTitle('IQ XML Creator')
self.show()
def main():
app = QtGui.QApplication(sys.argv)
ex = xml_creator()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
1 ответ
Я не мог найти решение для этого, но я нашел обходной путь, поэтому я публикую в надежде помочь тем, у кого такая же проблема, как и у меня.
Как только я не смог поместить поле со списком в QColumnView, как я пытался, моим обходным решением было создать таблицу, заполненную списками, которые я хотел, а затем установить этот QTable в качестве виджета предварительного просмотра в QColumnView.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
ItemDelegate
, но я попробовал и не смог заставить его работать, извините.