Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB

PyQt5 - Урок 006. Работа с QTableWidget

PyQt5, Python, QTableWidget

Для первоначального знакомства с QTableWidget в PyQt5 создадим таблицу с тремя колонками и одной строкой. При наведении мыши на заголовки таблицы будет показываться всплывающее сообщение. Текст в заголовках будет выровнен к левому краю у первой колонки, посередине во второй и справа у третьей колонки. Также размер колонок будет подогнан по содержимому.

Выглядеть таблица будет следующим образом:

Реализация

from PyQt5.QtWidgets import QApplication, QMainWindow, QGridLayout, QWidget, QTableWidget, QTableWidgetItem
from PyQt5.QtCore import QSize, Qt


# Наследуемся от QMainWindow
class MainWindow(QMainWindow):
    # Переопределяем конструктор класса
    def __init__(self):
        # Обязательно нужно вызвать метод супер класса
        QMainWindow.__init__(self)

        self.setMinimumSize(QSize(480, 80))             # Устанавливаем размеры
        self.setWindowTitle("Работа с QTableWidget")    # Устанавливаем заголовок окна
        central_widget = QWidget(self)                  # Создаём центральный виджет
        self.setCentralWidget(central_widget)           # Устанавливаем центральный виджет

        grid_layout = QGridLayout()             # Создаём QGridLayout
        central_widget.setLayout(grid_layout)   # Устанавливаем данное размещение в центральный виджет

        table = QTableWidget(self)  # Создаём таблицу
        table.setColumnCount(3)     # Устанавливаем три колонки
        table.setRowCount(1)        # и одну строку в таблице

        # Устанавливаем заголовки таблицы
        table.setHorizontalHeaderLabels(["Header 1", "Header 2", "Header 3"])

        # Устанавливаем всплывающие подсказки на заголовки
        table.horizontalHeaderItem(0).setToolTip("Column 1 ")
        table.horizontalHeaderItem(1).setToolTip("Column 2 ")
        table.horizontalHeaderItem(2).setToolTip("Column 3 ")

        # Устанавливаем выравнивание на заголовки
        table.horizontalHeaderItem(0).setTextAlignment(Qt.AlignLeft)
        table.horizontalHeaderItem(1).setTextAlignment(Qt.AlignHCenter)
        table.horizontalHeaderItem(2).setTextAlignment(Qt.AlignRight)

        # заполняем первую строку
        table.setItem(0, 0, QTableWidgetItem("Text in column 1"))
        table.setItem(0, 1, QTableWidgetItem("Text in column 2"))
        table.setItem(0, 2, QTableWidgetItem("Text in column 3"))

        # делаем ресайз колонок по содержимому
        table.resizeColumnsToContents()

        grid_layout.addWidget(table, 0, 0)   # Добавляем таблицу в сетку


if __name__ == "__main__":
    import sys

    app = QApplication(sys.argv)
    mw = MainWindow()
    mw.show()
    sys.exit(app.exec())

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
НБ
15 февраля 2019 г. 13:09
Николай Булахтин

C++ - Тест 003. Условия и циклы

  • Результат:50баллов,
  • Очки рейтинга-4
НБ
15 февраля 2019 г. 13:03
Николай Булахтин

C++ - Тест 002. Константы

  • Результат:25баллов,
  • Очки рейтинга-10
НБ
15 февраля 2019 г. 13:01
Николай Булахтин

C++ - Тест 001. Первая программа и типы данных

  • Результат:73баллов,
  • Очки рейтинга1
Последние комментарии
V
14 февраля 2019 г. 18:41
Vlad15007

Спасибо огромное! Заработало!
А
12 февраля 2019 г. 9:26
Александр90

Сам разборался, спасибо.
А
12 февраля 2019 г. 8:19
Александр90

День добрый! Можешь выложить форму mainwindow.ui от урока? Заранее спасибо
11 февраля 2019 г. 10:51
Евгений Легоцкой

Нет, у меня проблема с жёстким диском случилась, занимался восстановлением ПК, ещё пару вечеров придётся этим заниматься, увы.
Сейчас обсуждают на форуме
15 февраля 2019 г. 21:22
IscanderChe

Доброй ночи.Скромно напоминаю о своём вопросе...
15 февраля 2019 г. 15:36
Евгений Легоцкой

Ну я тут нашёл одно решение, но сам его не проверял. Вам нужно помещать фамилии скорее всего в ячейки заголовка, и потом просто перерисовывать их QHeaderView * header = m_ui->tableWidget...
15 февраля 2019 г. 7:53
Евгений Легоцкой

Добрый день! Не работал с remoteobjects, поэтому глянул документацию, чтобы рассмотреть, что это за зверь. После просмотра документации сложилось стойкой впечатление, что это вполне возм...
m
14 февраля 2019 г. 18:28
mr_roman

Нашел решение на Java. Удалось интегрировать в проект сервиса на Qt, теперь из Qt запускаю Java-код акселерометра.
14 февраля 2019 г. 11:00
Евгений Легоцкой

ok. I see. You changed related name Try this {% if goal.joined.all|user_in:request.user %}
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы