Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2016 19:31:58

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Технология работы с базой данных

> С чем проще
Проще с QTableWidget, но он более примитивен.

> где можно искать, сортировать считанные данные
Везде.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#2 Фев. 7, 2016 16:26:13

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

Не могу разобраться с заполнением таблицы QTableView. Помогите. Спасибо.

Офлайн

#3 Фев. 8, 2016 11:09:31

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Технология работы с базой данных

> Не могу разобраться с заполнением таблицы QTableView

Что конкретно не получается? Напиши код.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Фев. 9, 2016 12:31:52

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

Не могу даже код написать. С чего начать не пойму. Сначала обязательно модель нужно описать? Потом только саму таблицу? Где примеры простые посмотреть можно. Все примеры к SQL. А мне просто понять схему работы.

Офлайн

#5 Фев. 9, 2016 13:05:36

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Технология работы с базой данных

Офлайн

#6 Фев. 9, 2016 13:55:33

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Технология работы с базой данных

#!/usr/bin/python
# coding: utf-8
 
import sys
import PySide.QtGui as QtGui
import PySide.QtCore as QtCore
 
data = [[123, 456, 789], [444, 555, 666]]
 
class modelist(QtCore.QAbstractTableModel):
	def __init__(self, parent):
		QtCore.QAbstractTableModel.__init__(self, parent)
 
	def rowCount(self, parent=None):
		return len(data)
 
	def columnCount(self, parent=None):
		return 3
 
	def data(self, idx, role=QtCore.Qt.DisplayRole):
		if role == QtCore.Qt.DisplayRole:
			return data[idx.row()][idx.column()]
 
	def headerData(self, section, orientation, role=QtCore.Qt.DisplayRole):
		if role == QtCore.Qt.DisplayRole and  orientation == QtCore.Qt.Horizontal:
			return (u"Заголовок №1", u"Заголовок №2", u"Заголовок №3")[section]
 
class X(QtGui.QMainWindow):
	def __init__(self):
		QtGui.QMainWindow.__init__(self)
		model = modelist(self)
		sortModel = QtGui.QSortFilterProxyModel(self)
		sortModel.setSourceModel(model)
		 
		self.view = QtGui.QTableView(self)
		self.view.setModel(sortModel)
		self.view.setSortingEnabled(True)
		 
		self.view.setSelectionMode(QtGui.QAbstractItemView.SingleSelection)
		self.view.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
		self.view.setCornerButtonEnabled(False)
 
		self.setCentralWidget(self.view)
 
if __name__ == "__main__":
	app = QtGui.QApplication(sys.argv)
	win = X()
	win.show()
	sys.exit(app.exec_())



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Фев. 9, 2016 14:29:57

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

Я так понял это для PyQt4, а у меня PyQt5.

Офлайн

#8 Фев. 9, 2016 18:34:12

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Технология работы с базой данных

Если есть реальная задача, наверно лучше было бы импортировать данные dbf в современную субд и далее обрабатывать их там. Лично я так и делаю, а иначе, по-быстрому, ковыряю их в консоли foxpro.

Офлайн

#9 Фев. 10, 2016 10:06:56

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Технология работы с базой данных

> Я так понял это для PyQt4, а у меня PyQt5.

Ну это был пример того как оно должно работать. Реальный код на PyQt5 тебе придётся писать самостоятельно.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#10 Фев. 11, 2016 06:19:15

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

Rodegast, спасибо!
По твоему коду.
modelist - это сама модель
rowCount - количество строк
columnCount -количество колонок
headerData - заголовки таблицы
А что такое data, DisplayRole, QSortFilterProxyModel?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version