Python Forum
Remove of reset delegate
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Remove of reset delegate
#3
Here is the code, but I cannot get mode 1 and 2 to execute.

What I want is, mode 1 and mode 2 are distinct, mode1 settings will not appear in mode2 when toggled.

Thanks.
import sys
from PySide2.QtWidgets import QApplication, QTableWidget, QStyledItemDelegate, QWidget, QHeaderView, QAbstractItemView, \
                                QPushButton, QTableWidgetItem, QVBoxLayout, QHBoxLayout, QRadioButton

from PySide2.QtCore import Qt


class ReadOnly(QStyledItemDelegate):
    def createEditor(self, parent, option, index):
        return


class TableWidget(QTableWidget):
    def __init__(self):
        super().__init__(1, 5)
        self.setHorizontalHeaderLabels(list('ABCDE'))
        self.verticalHeader().setDefaultSectionSize(50)
        self.horizontalHeader().setDefaultSectionSize(250)
        self.horizontalHeader().setSectionResizeMode(QHeaderView.Fixed)

    def _addRow(self):
        rowCount = self.rowCount()
        self.insertRow(rowCount)

    def _removeRow(self):
        if self.rowCount() > 0:
            self.removeRow(self.rowCount()-1)

    def _copyRow(self):
        self.insertRow(self.rowCount())
        rowCount = self.rowCount()
        columnCount = self.columnCount()

        for j in range(columnCount):
            if not self.item(rowCount-2, j) is None:
                self.setItem(rowCount-1, j, QTableWidgetItem(self.item(rowCount-2, j).text()))


class AppDemo(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(1600, 600)

        mainLayout = QHBoxLayout()

        table = TableWidget()
        mainLayout.addWidget(table)

        buttonLayout = QVBoxLayout()

        button_new = QPushButton("New")
        button_new.clicked.connect(table._addRow)
        buttonLayout.addWidget(button_new)

        button_copy = QPushButton('Copy')
        button_copy.clicked.connect(table._copyRow)
        buttonLayout.addWidget(button_copy)

        button_remove = QPushButton('Remove')
        button_remove.clicked.connect(table._removeRow)
        buttonLayout.addWidget(button_remove)

        radioLayout = QVBoxLayout()

        radioA = QRadioButton('A')
        radioA.toggled.connect(self.mode1)
        radioLayout.addWidget(radioA)

        radioB = QRadioButton('B')
        radioB.toggled.connect(self.mode2)
        radioLayout.addWidget(radioB)

        mainLayout.addLayout(buttonLayout)
        mainLayout.addLayout(radioLayout)
        self.setLayout(mainLayout)

    def mode1(self):
        delegate = ReadOnly(self)
        table = TableWidget()
        table.setItemDelegateForColumn(0, delegate)
        table.setItemDelegateForRow(0, delegate)

    def mode2(self):
        delegate = ReadOnly(self)
        table = TableWidget()
        table.setItemDelegateForColumn(2, delegate)
        table.setItemDelegateForRow(2, delegate)


app = QApplication(sys.argv)
app.setStyleSheet('QPushButton{font-size: 20px; width: 200px; height: 50px}')
demo = AppDemo()
demo.show()
sys.exit(app.exec_())
Reply


Messages In This Thread
Remove of reset delegate - by GMCobraz - Aug-15-2020, 07:59 PM
RE: Remove of reset delegate - by deanhystad - Aug-16-2020, 12:19 PM
RE: Remove of reset delegate - by GMCobraz - Aug-17-2020, 09:55 AM
RE: Remove of reset delegate - by deanhystad - Aug-17-2020, 12:24 PM
RE: Remove of reset delegate - by GMCobraz - Aug-17-2020, 01:34 PM
RE: Remove of reset delegate - by deanhystad - Aug-17-2020, 02:43 PM
RE: Remove of reset delegate - by GMCobraz - Aug-19-2020, 12:20 PM

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020