Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » [PyQt5] Два разных шрифта в одной ячейке таблицы [RSS Feed]

#1 Фев. 21, 2022 23:07:31

vanvanov
Зарегистрирован: 2013-03-31
Сообщения: 252
Репутация: +  4  -
Профиль   Отправить e-mail  

[PyQt5] Два разных шрифта в одной ячейке таблицы

Приветствую!

Начал изучение Qt5. Хочу сделать так, чтобы в QTableWidgetItem можно было использовать 2 разных шрифта, но без вставки специальных виджетов типа QTextEdit, чтобы это не приводило к замедлению программы. Можете привести простейший пример?

Пока что написал вот такой код, но сам до конца не разобрался, что он делает и как его использовать.

 #!/usr/bin/python3
import PyQt5
import PyQt5.QtWidgets
import sys
cell = 'Общая лексика'
class MyTableModel(PyQt5.QtCore.QAbstractTableModel):
    
    def __init__(self, datain, parent=None, *args):
        PyQt5.QtCore.QAbstractTableModel.__init__(self,parent,*args)
        self.datain = datain
    def rowCount(self,parent=None,*args,**kwargs):
        return 4
    def columnCount(self,parent=None,*args,**kwargs):
        return 4
    
    def data(self,index,role=PyQt5.QtCore.Qt.DisplayRole):
        if not index.isValid():
            return PyQt5.QtCore.QVariant()
        if role == PyQt5.QtCore.Qt.FontRole:
            return PyQt5.QtGui.QFont('Serif',14)
        else:
            try:
                return PyQt5.QtCore.QVariant(self.datain)
            except Exception as e:
                return PyQt5.QtCore.QVariant()
class Table(PyQt5.QtWidgets.QWidget):
    
    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
    
    def fill(self):
        table_item = PyQt5.QtWidgets.QTableWidgetItem(cell)
        self.table.setItem(0,0,table_item)
    
    def set_gui(self):
        self.table = PyQt5.QtWidgets.QTableWidget()
        self.table.setRowCount(4)
        self.table.setColumnCount(4)
        self.set_bindings()
        self.hheader = self.table.horizontalHeader()
        self.hheader.setSectionResizeMode(PyQt5.QtWidgets.QHeaderView.ResizeToContents)
        self.model = MyTableModel(datain=cell,parent=self.table)
        self.view = PyQt5.QtWidgets.QTableView(self.table)
        self.view.setModel(self.model)
        self.layout = PyQt5.QtWidgets.QVBoxLayout()
        self.layout.addWidget(self.view)
        self.setLayout(self.layout)
    
    def set_bindings(self):
        PyQt5.QtWidgets.QShortcut(PyQt5.QtGui.QKeySequence('Ctrl+Q'),self).activated.connect(self.close)
        PyQt5.QtWidgets.QShortcut(PyQt5.QtGui.QKeySequence('Esc'),self).activated.connect(self.close)
if __name__ == '__main__':
    f = 'controller.__main__'
    app = PyQt5.QtWidgets.QApplication(sys.argv)
    itable = Table()
    itable.set_gui()
    itable.fill()
    itable.showMaximized()
    sys.exit(app.exec())

Офлайн

  • Начало
  • » GUI
  • » [PyQt5] Два разных шрифта в одной ячейке таблицы[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version