Buy Me a Coffee? Your support is much appreciated!
PayPal Me: https://www.paypal.me/jiejenn/5
Venmo: @Jie-Jenn
Source Code:
import sys from PyQt6.QtWidgets import QApplication, QWidget, QLineEdit, QTreeWidget, QTreeWidgetItem, \ QHBoxLayout, QVBoxLayout, QItemDelegate from PyQt6.QtCore import Qt, QRegularExpression #QRegExp from PyQt6.QtGui import QRegularExpressionValidator class TreeWidgetDelegate(QItemDelegate): def createEditor(self, parent, option, index): editor = QLineEdit(parent=parent) pattern = '[A-z0-9]+' reg = QRegularExpression(pattern) reg_validator = QRegularExpressionValidator(reg) editor.setValidator(reg_validator) return editor class MyApp(QWidget): def __init__(self): super().__init__() self.window_width, self.window_height = 700, 500 self.resize(self.window_width, self.window_height) self.layout = QVBoxLayout() self.setLayout(self.layout) self.tree = QTreeWidget() self.tree.itemDoubleClicked.connect(self.rename_value) self.layout.addWidget(self.tree) for i in range(5): item = QTreeWidgetItem([str(i)*3]) self.tree.addTopLevelItem(item) delegate = TreeWidgetDelegate() self.tree.setItemDelegate(delegate) def rename_value(self): item = self.tree.selectedItems() if item: item = item[0] item.setFlags(item.flags() | Qt.ItemFlags.ItemIsEditable) if __name__ == '__main__': # don't auto scale when drag app to a different monitor. # QGuiApplication.setHighDpiScaleFactorRoundingPolicy(Qt.HighDpiScaleFactorRoundingPolicy.PassThrough) app = QApplication(sys.argv) app.setStyleSheet(''' QWidget { font-size: 17px; } ''') myApp = MyApp() myApp.show() try: sys.exit(app.exec()) except SystemExit: print('Closing Window...')