Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 27, 2011 12:20:11

Kesha
От:
Зарегистрирован: 2011-04-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с QListView

Программа должна брать с БД название отдела ( t1.name), описание ПО (t1.opis_port) с таблицы opis и ip адрес установленной машины ( t2.ip) с таблицы ip по номеру выбранного отдела
Вывод в QComboBox названия отделов реалезованно и работает, а вывод по названию отдела ip адресов установленных компьютеров и установеного ПО в QListView не могу реализовать
помогите советом что ли хотя бы

import os
import sys
import sqlite3
from PyQt4 import QtGui, QtCore

db_connection = sqlite3.connect('mydata.db')
cur = db_connection.cursor()
cur.execute(“select t1.name, t1.opis_port, t2.ip from opis t1 join ip t2 on t1.id=t2.id_otd;”)
#print cur.fetchall()

OTD=cur.fetchall()

class System(QtGui.QWidget):
def __init__(self, parent=None, dbc=None):
QtGui.QWidget.__init__(self, parent)

self.setGeometry(10, 10, 820, 670)
self.setWindowTitle('System')

label1 = QtGui.QLabel('Otdel',self)
label1.move(110, 70)

combo = QtGui.QComboBox(self)
# запрос… чтение результата
self.combo=combo
for a,b,c in OTD:
combo.addItem(a, (a,b,c))

self.connect(combo,QtCore.SIGNAL('activated(int)'), self.on_combo_changed)

combo.setGeometry(90, 90, 250, 35)

label2 = QtGui.QLabel('Opisanie portov', self)
label2.move(110, 170)
self.l=label2

list1 = QtGui.QListView(self)
list1.setGeometry(90, 190, 300, 300)
self.l1=list1

label3 = QtGui.QLabel('IP adress computer', self)
label3.move(450, 170)
self.l2 = label3

list2 = QtGui.QListView(self)
list2.setGeometry(430, 190, 300, 300)

scan = QtGui.QPushButton('Scan', self)
scan.setGeometry(430, 90, 180, 35)

quit = QtGui.QPushButton('Exit', self)
quit.setGeometry(650, 600, 80, 35)

self.connect(quit, QtCore.SIGNAL('clicked()'),
QtGui.qApp, QtCore.SLOT('quit()'))

def on_combo_changed(self, i):
a,b,c = self.combo.itemData(i).toPyObject()

В ЭТОЙ ФУНКЦИИ НУЖНО НАПИСАТЬ ЧТО БЫ РЕЗУЛЬТАТ С БАЗЫ ДАННЫХ ВЫВОДИЛСЯ В QListView ПОД НАЗВАНИЕМ “l1” сам результат в переменной “b” цикла for, ЗАПРОС РАБОЧИЙ

app = QtGui.QApplication(sys.argv)
qb = System()
qb.show()
sys.exit(app.exec_())



Офлайн

#2 Апрель 27, 2011 13:57:19

Studentik
От:
Зарегистрирован: 2009-12-26
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с QListView

Может QListWidget?

from PyQt4 import Qt as qt
import sys

app = qt.QApplication(sys.argv)
mw = qt.QMainWindow()
fr = qt.QFrame()
lt = qt.QVBoxLayout()
cb = qt.QComboBox()
lw = qt.QListWidget()
fr.setLayout(lt)
lt.addWidget(cb)
lt.addWidget(lw)
mw.setCentralWidget(fr)

cb.addItem("")
cb.addItem("Item 1")
cb.addItem("Item 2")

def on_cb_activated(text):
lw.clear()
lw.addItem("List item data based on combobox '{}'".format(text))

cb.activated[str].connect(on_cb_activated)

mw.show()
app.exec_()



Офлайн

#3 Апрель 27, 2011 14:13:38

Kesha
От:
Зарегистрирован: 2011-04-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с QListView

Спасибо, заработало! а почему с QListView то так не получалось?



Офлайн

#4 Апрель 27, 2011 14:29:41

Studentik
От:
Зарегистрирован: 2009-12-26
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с QListView

QListWidget is a convenience class that provides a list view similar to the one supplied by QListView, but with a classic item-based interface for adding and removing items.



Офлайн

#5 Апрель 27, 2011 14:34:12

Kesha
От:
Зарегистрирован: 2011-04-27
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с QListView

А как сделать что бы информация с базы выводилась в QListWidget построчно? Т.е. например IP компов каждый в разной строке



Офлайн

#6 Апрель 27, 2011 19:13:52

Studentik
От:
Зарегистрирован: 2009-12-26
Сообщения: 99
Репутация: +  0  -
Профиль   Отправить e-mail  

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version