2009-07-11 2 views
2

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

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

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

ответ

3

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

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

Я думаю, что единственной функциональностью, которую вам придется вручную реализовать, является «TAB» в конце таблицы, чтобы создать новую строку, если вы хотите ее сохранить.

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

+0

+1 Это о решении, которое я бы придумал с каркасом PyQt. – ChristopheD