@shutov_95

Как закодить динамическое(по кнопке) изменение свойств таблицы в PyQT5?

Дано: 2 QLineEdit'а и 1 кнопка.

Необходимо:
1) Необходимо по нажатию кнопки считать данные из QLineEdit'ов, привести их к типу int(потому что подозреваю, что считаются они в str) и запихнуть в команды table.setRowCount() и table.setColumnCount(). То есть изменить вид таблицы, основываясь на введённых данных.

Желательно:
2) Пояснять нерадивому автору заметки информацию о создании "кривых" таблиц. То есть в первом столбце такой таблицы будет, например, 5 строк. Во втором столбце каждой из строк первого столбца будут соответствовать ещё некоторое количество строк (т.е. первой строке первого столбца будет одно поле, а в первой строке второго столбца их будет 5 или 3). Примерно так же по отношению к 3-му столбцу относительно 2-го столбца. То есть, если идти в обратном порядке и проводить параллель с Excel - это объединение нескольких ячеек в одну.

В коде предпринималась попытка создать(НЕ показать) таблицу по нажатию на клавишу (что, я так понимаю, или очень сложно или почти невозможно), поэтому не обращайте пожалуйста на это внимания.
Под катом код.

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import sys
from PyQt5.QtWidgets import QLabel, QWidget, QMessageBox, QApplication, QToolTip, QPushButton, QHBoxLayout, QVBoxLayout, QLineEdit, QDesktopWidget, QTableWidget
from PyQt5.QtGui import QIcon, QFont
from PyQt5.QtCore import pyqtSlot


class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # задаём параметры окна, имя, иконку в корне
        self.resize(730, 486)
        self.setWindowTitle('Message box')
        self.setWindowIcon(QIcon('icon.png'))

        # определяем лейблы с расположением и размерами
        l1 = QLabel('Количество экспертов', self)
        l1.setGeometry(10, 0, 121, 21)
        l2 = QLabel('Количество кандидатов', self)
        l2.setGeometry(10, 60, 131, 16)

        # определяем textbox'ы с расположением и размерами
        txb1 = QLineEdit(self)
        txb1.setGeometry(10, 30, 113, 20)
        txb2 = QLineEdit(self)
        txb2.setGeometry(10, 80, 113, 20)

        # определяем кнопку, её подсказку, размер и прочее
        btn1 = QPushButton('Сфомировать таблицу', self)
        btn1.setToolTip('This is a <b>QPushButton</b> widget')
        btn1.setGeometry(140, 80, 131, 23)

        #определяем ещё не видную таблицу
        t1 = QTableWidget(self)

        btn1.clicked.connect(self.on_click)
        self.show()

    # происходит троллинг (нажатие клавиши)
    @pyqtSlot()
    def on_click(self):
        txbVal1 = self.txb1.text()
        txbVal2 = self.txb2.text()
        t1.setRowCount(self, txbVal1)
        t1.setColumnCount(self, txbVal2)
        t1.SetGeomety(10, 130)
        self.t1.show()


    def closeEvent(self, event):

        reply = QMessageBox.question(self, 'Message',
            "Are you sure to quit?", QMessageBox.Yes |
            QMessageBox.No, QMessageBox.No)

        if reply == QMessageBox.Yes:
            event.accept()
        else:
            event.ignore()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

  • Вопрос задан
  • 471 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы