Форум сайта python.su
Здарвствуйте!
Недавно начал учить питон. Хотел бы узнать какие виджеты в PyQt лучше использовать для отображения базы данных (sqlite). Вроде нашел QTableView, но как связать с базой толком не разобрался. Понял что у Qt есть свои стандартные спобоы раоты с базой, но мне хотелось бы что б видежты PyQt только отображали, а работа с базой осуществлялось через модуль sqlite. И все изменения автоматически отображались на виджетах. Такое возможно сделать?
PS Не судите сильно, если вопрос легкий. Просто я 2й день мучаюсь и найти ни чего подходящего не мог. Заранее всем спасибо за помощь
Офлайн
QTableWidget попроще будет или QListWidget, что тебе логически больше подходит. Соединить просто - берешь данные и вставляешь в ячейки :)
Офлайн
U
pasaranaxСпасибо что отозвались.
QTableWidget попроще будет или QListWidget, что тебе логически больше подходит. Соединить просто - берешь данные и вставляешь в ячейки :)
Офлайн
А зачем QTableWidget, если он оставлен только ради совместимости, а работать надо с QTableView. Там все просто: есть еще QSqlTableModel, вот в нем задаются некоторые параметры, а потом он подключается к QTableView через QTableView.setModel(self ,model).
По-моему очень просто все и работать будет так как и хочет TC
Офлайн
ussr-->Сейчас попробовал QTableWidget. Удобная вещь. Спасибо за совет! Только вот вопрос такой. А нет ли какого нибудь ограничения для них? Ну QTableWidget может на пример,нормально работать с не более 1000 записей в базе а дальше либо теряет эффективность, либо вообще не работает.
UpasaranaxСпасибо что отозвались.
QTableWidget попроще будет или QListWidget, что тебе логически больше подходит. Соединить просто - берешь данные и вставляешь в ячейки :)
Ну в ручную это понятно что можно. Я просто хотел что б была какая нибудь связь, которая в случае изменений в базе, автоматически эти изменения отображало на виджите. Или если не пользоваться средствами pyqt для работы с базой, то нужно будет в ручную за этими изменениями следить?
Офлайн
dartNNNДа. Это то что нужно! Спасибо вам большое!
А зачем QTableWidget, если он оставлен только ради совместимости, а работать надо с QTableView. Там все просто: есть еще QSqlTableModel, вот в нем задаются некоторые параметры, а потом он подключается к QTableView через QTableView.setModel(self ,model).
По-моему очень просто все и работать будет так как и хочет TC
Офлайн
Ну сам я такое не делал, обходился стандартом. Но в общем случае это нужно, когда стандартного функционала не хватает. В примерах PyQt, например, переопределяется QSqlQueryModel, чтобы сделать только 1 и 2 столбцы редактируемыми, также там обрабатываются данные из базы, прежде чем передать их в QTableView. Т.к. QSqlTableModel лежит между базой и QTableView, то это самое то место для обработки данных перед выводом в QTableView
Офлайн
dartNNNСпасибо большое за разъяснение! Мне просто нужно было отображать не одну таблицу (как в QSqlTableModel предлагают), а объединение. Вот уже и начал думать, что для этого придется писать свою модель. Но потом нашел QSqlQueryModel и понял, что можно обойтись. Но тогда стало интересно… Для чего вообще нужна своя модель:)
Ну сам я такое не делал, обходился стандартом. Но в общем случае это нужно, когда стандартного функционала не хватает. В примерах PyQt, например, переопределяется QSqlQueryModel, чтобы сделать только 1 и 2 столбцы редактируемыми, также там обрабатываются данные из базы, прежде чем передать их в QTableView. Т.к. QSqlTableModel лежит между базой и QTableView, то это самое то место для обработки данных перед выводом в QTableView
Офлайн