tabla de contenidos
1. Todo el mundo está en el corazón,
2. Control de árbol (QTREEWIDGET) uso básico
3. Agregue un tiempo de respuesta al nodo de árbol
IV. Aumentar, modificar y eliminar nodos de controles de árbol
Control V.qtreeView y modo personalizado del sistema
1. Todo el mundo está en el corazón,
2. Control de árbol (QTREEWIDGET) uso básico
Código:
importar sys
de PyQt5.QtWidgets import *
de PyQt5.QtCore importación *
de PyQt5.QtGui importación *
clase BasicTreeWidget(QMainWindow):
def __init__(self,parent=None):
super(BasicTreeWidget, self).__init__(parent)
Self.SetWindowTitle (Ley básica de control de árboles (QTREEWIDGET «)
self.resize(500.300)
#tree
self.tree=QTreeWidget()
# Especifique el número de columnas para los controles de árbol
self.tree.setColumnCount(2)
# Especificar etiqueta de columna
self.tree.setHeaderLabels([‘Key’,’Value’])
#
root=QTreeWidgetItem(self.tree)
Root.Settext (0, ‘nodo raíz’) # 0 representa la primera columna, es decir, la columna de clave
Root.seticon (0, QiCon (‘.. / Imagen / Bolsa / Bag1.jpg’)) # Establecer icono para el nodo
Self.Tree.SetColumnWidth (0,200) # 1 lista de ancho a 200
# Añadir subnodo 1
child1=QTreeWidgetItem(raíz)
Child1.Settext (0, ‘nodo secundario 1’) # k 1
Child1.setText (1, Datos ‘) # 2 del segundo valor de columna son los datos del nodo secundario 1
child1.setIcon(0,QIcon(‘.. /picture/bag/bag2.jpg’))
# Establezca el subnodo 1 para activar el estado de la casilla de verificación
child1.setCheckState(0,Qt.Checked)
# Añadir subnodo 2
child2=QTreeWidgetItem(raíz)
Child2.Settext (0, ‘nodo secundario 2’)
child2.setIcon(0,QIcon(‘.. /picture/bag/bag3.jpg’))
# Añadir un nodo secundario para Child2
child3=QTreeWidgetItem(child2)
Child3.Settext (0, ‘nodo secundario 2-1’)
Child3.Settext (1, ‘Nuevo valor’)
child3.setIcon(0,QIcon(‘.. /picture/bag/bag4.jpg’))
# Predeterminado Todos los nodos se expanden
self.tree.expandAll()
# Establecer el control de árbol como un control central, es decir, el control de árbol se extenderá automáticamente toda la pantalla.
self.setCentralWidget(self.tree)
si __name__==’__main__’:
app=QApplication(sys.argv)
main=BasicTreeWidget()
main.show()
sys.exit(app.exec_())
resultado de la operación:
3. Agregue un tiempo de respuesta al nodo de árbol
Código:
importar sys
de PyQt5.QtWidgets import *
de PyQt5.QtCore importación *
de PyQt5.QtGui importación *
clase TreeEvent(QMainWindow):
def __init__(self,parent=None):
super(TreeEvent, self).__init__(parent)
propio. SETWINDOWTILE (‘Añadir eventos de respuesta para árbol)
self.resize(400.300)
#tree
self.tree=QTreeWidget()
# Especifique el número de columnas para los controles de árbol
self.tree.setColumnCount(2)
# Especificar etiqueta de columna
self.tree.setHeaderLabels([‘Key’,’Value’])
#
root=QTreeWidgetItem(self.tree)
Root.Settext (0, ‘root’) # 0 representa la primera columna, la columna de clave, el valor es root
root.setText(1,’0′)
# NIÑO1
child1=QTreeWidgetItem(raíz)
child1.setText(0,’child1′)
child1.setText(1,’1′)
# CHild2
child2=QTreeWidgetItem(raíz)
child2.setText(0,’child2′)
child2.setText(1,’2′)
# Añadir un nodo secundario para Child2 Child3
child3=QTreeWidgetItem(child2)
child3.setText(0,’child3′)
child3.setText(1,’3′)
# Señal y ranuras
self.tree.clicked.connect(self.onTreeClicked)
# Establecer el control de árbol como un control central, es decir, el control de árbol se extenderá automáticamente toda la pantalla.
self.setCentralWidget(self.tree)
DEF ONTREECLICKED (Self, INDEX): #index es el índice del nodo con clic
Item = Self.tree.currentItem () # Obtener los clics actuales
Imprimir (‘está actualmente en la primera línea D «# salida de la línea actual (el primer valor de su propio nodo primario)
print(‘key=%s,value=%s’%(item.text(0),item.text(1)))
print()
si __name__==’__main__’:
app=QApplication(sys.argv)
main=TreeEvent()
main.show()
sys.exit(app.exec_())
resultado de la operación:
EG: Child1 es el primer nodo de raíz, el número de filas es 0; Child2 es el segundo nodo de raíz, el número de filas es 1; Child3 es el primer nodo de Child2, el número de filas es 0
IV. Aumentar, modificar y eliminar nodos de controles de árbol
Código:
importar sys
de PyQt5.QtWidgets import *
de PyQt5.QtCore importación *
de PyQt5.QtGui importación *
clase ModifyTree(QWidget):
def __init__(self,parent=None):
super(ModifyTree, self).__init__(parent)
propio. SETWINDOWTITLE (‘Añade el nodo «en el control de árbol)
self.resize(400.300)
OperatorLayout = QHBOXLAYOUT () # diseño horizontal
AddBTN = QPushbutton (‘Añadir nodo’)
Updatebtn = qpushbutton (‘Modificar nodo’)
deletebtn = qpushbutton (‘Eliminar nodo’)
operatorLayout.addWidget(addBtn)
operatorLayout.addWidget(updateBtn)
operatorLayout.addWidget(deleteBtn)
addBtn.clicked.connect(self.addNode)
updateBtn.clicked.connect(self.updateNode)
deleteBtn.clicked.connect(self.deleteNode)
#
self.tree = QTreeWidget()
# Especifique el número de columnas para los controles de árbol
self.tree.setColumnCount(2)
# Especificar etiqueta de columna
self.tree.setHeaderLabels([‘Key’, ‘Value’])
#
raíz = QTreeWidgetItem(self.tree)
Root.Settext (0, ‘root’) # 0 representa la primera columna, la columna de clave, el valor es root
root.setText(1, ‘0’)
# NIÑO1
child1 = QTreeWidgetItem(root)
child1.setText(0, ‘child1’)
child1.setText(1, ‘1’)
# CHild2
child2 = QTreeWidgetItem(root)
child2.setText(0, ‘child2’)
child2.setText(1, ‘2’)
# Añadir un nodo secundario para Child2 Child3
child3 = QTreeWidgetItem(child2)
child3.setText(0, ‘child3’)
child3.setText(1, ‘3’)
# Señal y ranuras
self.tree.clicked.connect(self.onTreeClicked)
mainLayout=QVBoxLayout(self)
mainLayout.addLayout(operatorLayout)
mainLayout.addWidget(self.tree)
self.setLayout(mainLayout)
DEF ONTREECLICKED (Self, INDEX): # index es el índice del nodo en el que se ha hace clic
Item = Self.tree.currentItem () # Obtener los clics actuales
Imprimir (‘está actualmente en la primera línea D «# salida de la línea actual (el primer valor de su propio nodo primario)
print(‘key=%s,value=%s’ % (item.text(0), item.text(1)))
print()
def addNode(self):
Imprimir (‘Añadir nodo’)
elemento = self.tree.currentItem () # Obtener el nodo actual
Imprimir (‘el nodo actual es:’, artículo)
node=QTreeWidgetItem(item)
Node.Settext (0, ‘nuevo nodo’)
Node.Settext (1, ‘Nuevo valor’)
def updateNode(self):
Imprimir (‘Modificar nodo’)
item=self.tree.currentItem()
Item.Settext (0, ‘Modificar nodo’)
item.settext (1, ‘»se ha modificado’)
def deleteNode(self):
Imprimir (‘Eliminar nodo’)
# Evitar que los elementos sean root, ROOT está equivocado, y usar la siguiente manera
Rootfather = self.tree.invisibleRootItItem () # Raíz invisible del nodo primario de Nougang
para el elemento en self.tree.selectedItems():
#Flial nodo no está vacío
(item.parent() o rootFather).removeChild(item)
si __name__==’__main__’:
app=QApplication(sys.argv)
main=ModifyTree()
main.show()
sys.exit(app.exec_())
resultado de la operación:
Control V.qtreeView y modo personalizado del sistema
Controles de árbol generalmente complejos con QTreeView para escribir
Código:
importar sys
de PyQt5.QtWidgets import *
de PyQt5.QtCore importación *
de PyQt5.QtGui importación *
si __name__==’__main__’:
app=QApplication(sys.argv)
# Modelo de visualización de la estructura de directorios
modelo=QDirModel()
tree=QTreeView()
tree.setModel(model)
tree.setWindowTitle(‘QTreeView’)
tree.resize(600.400)
tree.show()
sys.exit(app.exec_())
resultado de la operación:
.