Форум сайта python.su
Приветствую!
Начал изучение 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())
Офлайн