Я пытаюсь добавить параметр для QTreeWidget
, чтобы иметь многострочное редактирование, которое, как я предполагаю, потребует QTextEdit
. Проблема в том, что примеры, которые я нашел в Интернете, просто не работают.
Ответы Я найдено все указали на использование tree.setItemWidget(item, column, widget)
, но если я добавлю эту строку, окно просто не появляется вообще. Что я делаю не так в этом случае?
Вот мой пример кода, который имеет проблему:
import sys
from Qt import QtWidgets, QtCore
class MainWindow(QtWidgets.QMainWindow):
def __init__(self, parent=None, **kwargs):
super(MainWindow, self).__init__(parent, **kwargs)
#Add tree widget to window
tree = QtWidgets.QTreeWidget()
tree.setHeaderItem(QtWidgets.QTreeWidgetItem(['col1', 'col2']))
self.setCentralWidget(tree)
#Create items
topLevelButton = QtWidgets.QPushButton('button')
topLevelItem = QtWidgets.QTreeWidgetItem(['test button', 'line edit'])
topLevelItem.setFlags(topLevelItem.flags() | QtCore.Qt.ItemIsEditable)
#Add items to tree widget
tree.addTopLevelItem(topLevelItem)
tree.setItemWidget(topLevelItem, 0, topLevelButton) #the window will not load if this line is not commented out
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
app.setActiveWindow(window)
window.show()
sys.exit(app.exec_())
Я пробовал это в PySide (2.7)
и PySide2 (3.7)
.
Редактировать: По крайней мере, для Python 3 это было проблемой с PySide2, где форсирование PyQt5 каким-то образом исправляло то, что было. Я все еще не могу запустить Python 2, так как не могу установить PyQt4.
Редактировать 2: Это на самом деле вызывает сбой, если вы используете его в программе, такой как Nuke
, которая использует PySide
, возможно, мне придется задать более конкретный вопрос, если я не могу понять это из этого.