Вопрос

В настоящее время я пытаюсь перенести устаревшее приложение VBA / Microsoft Access на Python и PyQt.У меня не возникло проблем с переносом какой-либо логики, и большинство форм также были созданы без труда.Однако я столкнулся с проблемой в самой важной части приложения - основной форме ввода данных.

Форма в основном представляет собой строку текстовых полей, соответствующих полям в базе данных.Пользователь просто вводит данные в поля "а", переводит вкладки в следующее и повторяет.Когда пользователь доходит до конца записи / строки, он снова вводит табуляцию, и форма автоматически создает новую пустую строку, в которую он может снова начать вводить данные.(На самом деле, он отображает "пустую" строку под текущей новой записью, на которую пользователь также может нажать, чтобы начать новую запись.) Это также позволяет пользователю прокручивать вверх и вниз, чтобы увидеть все текущее подмножество записей, над которыми он работает.

Есть ли способ воспроизвести эту функциональность в PyQt?Мне не удалось найти способ заставить Qt сделать это легко.Access позаботится об этом автоматически;никакой код вне формы не требуется.Это так просто в PyQt (или даже близко), или это что-то, что нужно будет запрограммировать с нуля?

Это было полезно?

Решение

Вам следует заглянуть в QSqlTableModel и объекты QTableView.QSqlTableModel предлагает абстракцию реляционной таблицы, которая может быть использована внутри одного из классов представления Qt.Например, QTableView.Функциональность, которую вы описываете, может быть реализована с умеренными усилиями просто с помощью этих двух классов.

QSqlTableModel также поддерживает редактирование полей базы данных.

Я предполагаю, что единственная функциональность, которую вам придется реализовать вручную, - это "ВКЛАДКА" в конце таблицы для создания новой строки, если вы хотите сохранить ее.

Я мало что знаю о Access, но используя драйвер ODBC-SQL, вы должны иметь возможность использовать фактическую базу данных access для своей разработки или тестирования, там есть некоторая более старая информация здесь, возможно, вы захотите рассмотреть возможность перехода на Sqlite, Mysql или другую реальную базу данных SQL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top