Найти - Пользователи
Полная версия: PyQt и sqlite
Начало » GUI » PyQt и sqlite
1
ussr-->
Здарвствуйте!

Недавно начал учить питон. Хотел бы узнать какие виджеты в PyQt лучше использовать для отображения базы данных (sqlite). Вроде нашел QTableView, но как связать с базой толком не разобрался. Понял что у Qt есть свои стандартные спобоы раоты с базой, но мне хотелось бы что б видежты PyQt только отображали, а работа с базой осуществлялось через модуль sqlite. И все изменения автоматически отображались на виджетах. Такое возможно сделать?

PS Не судите сильно, если вопрос легкий. Просто я 2й день мучаюсь и найти ни чего подходящего не мог. Заранее всем спасибо за помощь
pasaranax
QTableWidget попроще будет или QListWidget, что тебе логически больше подходит. Соединить просто - берешь данные и вставляешь в ячейки :)
ussr-->
U
pasaranax
QTableWidget попроще будет или QListWidget, что тебе логически больше подходит. Соединить просто - берешь данные и вставляешь в ячейки :)
Спасибо что отозвались.

Ну в ручную это понятно что можно. Я просто хотел что б была какая нибудь связь, которая в случае изменений в базе, автоматически эти изменения отображало на виджите. Или если не пользоваться средствами pyqt для работы с базой, то нужно будет в ручную за этими изменениями следить?
dartNNN
А зачем QTableWidget, если он оставлен только ради совместимости, а работать надо с QTableView. Там все просто: есть еще QSqlTableModel, вот в нем задаются некоторые параметры, а потом он подключается к QTableView через QTableView.setModel(self ,model).
По-моему очень просто все и работать будет так как и хочет TC
ussr-->
ussr-->
U
pasaranax
QTableWidget попроще будет или QListWidget, что тебе логически больше подходит. Соединить просто - берешь данные и вставляешь в ячейки :)
Спасибо что отозвались.

Ну в ручную это понятно что можно. Я просто хотел что б была какая нибудь связь, которая в случае изменений в базе, автоматически эти изменения отображало на виджите. Или если не пользоваться средствами pyqt для работы с базой, то нужно будет в ручную за этими изменениями следить?
Сейчас попробовал QTableWidget. Удобная вещь. Спасибо за совет! Только вот вопрос такой. А нет ли какого нибудь ограничения для них? Ну QTableWidget может на пример,нормально работать с не более 1000 записей в базе а дальше либо теряет эффективность, либо вообще не работает.

И все же хотелось узнать. Если ли способ эффективней чем обновление путем удаление всех записей и нового их добавления?
ussr-->
dartNNN
А зачем QTableWidget, если он оставлен только ради совместимости, а работать надо с QTableView. Там все просто: есть еще QSqlTableModel, вот в нем задаются некоторые параметры, а потом он подключается к QTableView через QTableView.setModel(self ,model).
По-моему очень просто все и работать будет так как и хочет TC
Да. Это то что нужно! Спасибо вам большое!

Только вот один вопрос. Если не тяжело, то ответь пожалуйста. В инете натыкался на довольно частый случий, когда создавали свою модель, путем наследования от QSqlTableModel. В каких случаях это вообще необходимо и что это дает? Буду признателен если просвятите:)
dartNNN
Ну сам я такое не делал, обходился стандартом. Но в общем случае это нужно, когда стандартного функционала не хватает. В примерах PyQt, например, переопределяется QSqlQueryModel, чтобы сделать только 1 и 2 столбцы редактируемыми, также там обрабатываются данные из базы, прежде чем передать их в QTableView. Т.к. QSqlTableModel лежит между базой и QTableView, то это самое то место для обработки данных перед выводом в QTableView
ussr-->
dartNNN
Ну сам я такое не делал, обходился стандартом. Но в общем случае это нужно, когда стандартного функционала не хватает. В примерах PyQt, например, переопределяется QSqlQueryModel, чтобы сделать только 1 и 2 столбцы редактируемыми, также там обрабатываются данные из базы, прежде чем передать их в QTableView. Т.к. QSqlTableModel лежит между базой и QTableView, то это самое то место для обработки данных перед выводом в QTableView
Спасибо большое за разъяснение! Мне просто нужно было отображать не одну таблицу (как в QSqlTableModel предлагают), а объединение. Вот уже и начал думать, что для этого придется писать свою модель. Но потом нашел QSqlQueryModel и понял, что можно обойтись. Но тогда стало интересно… Для чего вообще нужна своя модель:)
В общем… Еще раз спасибо за то что отозвались и объяснили!)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB