кинотеатр Победа Лучшая поза в постели мечеть

piknad@yandex.ru

Начинающим

изучать Python

Город Уфа

мост ч/з Белую

Яндекс.Погода

Салават Юлаев Монумент Дружбы
СОДЕРЖАНИЕ

На главную страницу сайта

Установка PYTHON 3.8

Установка PyQT5 с DESIGNER в PYTON 3.8

Установка Dgango 3.0 в Windows 7. Решение проблем

Создание таблицы tablewidget; редактирование,сортировка данных в таблице в Phyton 3.81 Tkinter

Создание таблицы; редактирование,сортировка данных,вставка и удаление строк в таблице в Phyton 3.81 PyQt5. Использование Designer.

Модели в Питон 3, Python 3, PyQt5

Примеры перевода программ с Delphi в Python

Создание сайта (блога) в Pycharm

Получение кэшбэка

ПИТОН 3 ДЛЯ НАЧИНАЮЩИХ. РАБОТА С QTABLEWIDGET В PyQt5. РЕДАКТИРОВАНИЕ ПОЛЕЙ, ВСТАВКА, УДАЛЕНИЕ, РЕДАКТИРОВАНИЕ ЯЧЕЕК. ИСПОЛЬЗОВАНИЕ DESIGNER.

Использование Designer для разработки кода

1 2 3 4 5 6

Необходимые стандартные функции для таблицы tablewidget

 

self.table.setHorizontalHeaderLabels(["ID", "", "Статья дохода/расхода", "Сумма"])#Наименование столбцов
self.table.setColumnWidth(0, 25); self.table.setColumnWidth(1, 240)# задание ширины столбцов
self.table.setColumnWidth(2, 200); self.table.setColumnWidth(3, 100)
self.table.cellClicked.connect(self.cell_clicked) #корректирование ячейки

Рис. 13.

В первой строке мы задаем названия столбцов. Вместо наименования-пробелы, т.к. наименование будет указываться на кнопке для сортировки по наименованию (рис. 2, стр.1).

Корректировка ячейки tablewidget

Корректирование ячейки в таблице tablewidget

Для копирования:

def cell_clicked(self): #определение номера столбца и строки для ячейки
global costsz,totalz,descriptionz,row,col
row = self.table.currentItem().row() #Номер строки корректируемой ячейки
col = self.table.currentItem().column() #Номер столбца корректируемой ячейки
idz = int(self.table.item(row,0).text()) #Запоминание значений полей
descriptionz= self.table.item(row,1).text() #корректируемой строки
costsz= self.table.item(row,2).text()
totalz= self.table.item(row,3).text()

Рис. 14. Функция для корректировки ячейки таблицы tablewidget

Последние 4 строки используются для занесения во временные переменные значения выбранной строки.

Заполнение ячеек

Рис. 15. Заполнение новой строки (рис. 12, стр. 3)

Вставка строк из формы в таблицу

Бывает, что удобнее вставлять данные в форме. При этом будем заносить во временную таблицу с занесением в дальнейшем в основную таблицу. Для этого используем кнопку "Добавить строки в форме" по наименованию btn_dob. Кнопка вызывает функцию dob_str_form:

Добавление строк из формы

Рис. 16. Функция добавления строк

Для работы функции мы с помощью designer создадим новый класс TwoWindow(), аналогично , как и tabl (стр.1) . Назовем файл vvod_tabl. Аналогично создадим файл для конвертации conv_vvod_tabl.bat.

Форма для ввода данных в таблицу tablewidget

Рис. 16 Форма в Designer

Опишем следующие виджеты."Наименование"-label_description, "Статья дохода/расхода"- label_doxod, "Сумма"- label_sum. Окно для ввода наименования- entry_description., для ввода "дохода/дохода"- Edit_dox. окно для суммы-Edit_sum. Для выбора "расхода/дохода" используется виджет Combobox- comboBox. Кнопка "Добавить"- btn_dob_vv, "Очистить ввод"- btn_ochist. Таблицу tablewidget назовем tablevv.

Использование Designer

Для копирования:

class TwoWindow(QtWidgets.QMainWindow,vvod_tabl.Ui_MainWindow):
def __init__(self):
super().__init__()
#методом super() мы явно вызываем родительский конструктор.
self.setupUi(self)# Это нужно для инициализации нашего дизайна

Рис. 17. Класс для добавления данных в форме

Здесь мы в заголовок вставили аналогично vvod_tabl.Ui_MainWindow.

Создадим код для ввода данных.

self.btn_dob_vv.clicked.connect(self.dob_str) #кнопка добавления
self.comboBox.addItems(["Доход", "Расход"]) #Занесение в combobox
self.comboBox.activated[str].connect(self.onActivated) # функция занесения варианта в окно
self.tablevv.setHorizontalHeaderLabels(["ID", "Наименование", "Статья дохода/расхода", "Сумма"])
self.tablevv.setColumnWidth(0, 25); self.tablevv.setColumnWidth(1, 240)# задание ширины столбцов
self.tablevv.setColumnWidth(2, 200); self.tablevv.setColumnWidth(3, 100)
self.tablevv.cellClicked.connect(self.cell_clicked) #корректирование ячейки

TwoWindow.mat=[] #объявление массива для занесения из временной таблицы в
#в основную таблицу

Рис.18.

Так как после занесения во временную таблицу данных и закрытия формы данные в таблице tablewidget пропадают. Поэтому приходится использовать 2-х мерную матрицу. TwoWindow.mat=[]- объявление массива. Так как мы ее создали в классе TwoWindow, и будем использовать в другом классе, то она должна иметь имя созданного класса.

В третьей строчке (рис. 18) вызывается функция onActivated(self, text), которая заносит из Combobox выбранное значение в окно Edit_dox для получения типа операции (доход/расход). Текст функции приведен на рис. 19:

функция занесения из Combobox

def onActivated(self, text): #используется в combobox для получения значения в Edit
self.Edit_dox.setText(text)

Рис. 19. Функция для занесения выбранного значения из combobox в окно ввода.

Продолжение на следующей странице1 2 3 4 5 6

Загрузка...