示例#1
0
 def __init__(self,parent,con,app,compareId,current_subcategory):
     QtGui.QDialog.__init__(self, parent)
     
     self.setModal(True)
     
     ### Настройки окна ###
     self.setWindowTitle(trUtf8(app,"Сравнение товаров"))
     
     # Создание главного Layout
     main_layout=QtGui.QGridLayout()
     
     # добавление 2 ячеек
     label_new=QtGui.QLabel(trUtf8(app,"<b>Название</b>"))
     main_layout.addWidget(label_new,0,0)
     label_new=QtGui.QLabel(trUtf8(app,"<b>Цена</b>"))
     main_layout.addWidget(label_new,1,0)
     
     # добавление названий и цен
     # цикл по всем выбранным к сравнению товарам
     for s in range(0,len(compareId)):
         current_comm=compareId[s] # текущий товар
         # добавление названия
         current_comm_name  = queries.selectCommodityName(current_comm,con)
         label_new=QtGui.QLabel(trUtf8(app,"<b>"+str(current_comm_name)+"</b>"))
         main_layout.addWidget(label_new,0,s+1)
         # добавление цены
         current_comm_price = queries.selectCommodityPrice(current_comm,con)
         label_new=QtGui.QLabel(trUtf8(app,str(current_comm_price)))
         main_layout.addWidget(label_new,1,s+1)
     
     # получение инф-ции о характеристиках данной подкатегории
     # [(0-ch_name,1-ch_type,2-ch_id)...()]
     all_char=queries.selectAllFromCharacteristics(current_subcategory, con)
     # цикл по всем характеристикам
     for el in range(0,len(all_char)):
         current_char=all_char[el]    # текущая характеристика
         #добавляем label с её названием
         label_new=QtGui.QLabel(trUtf8(app,"<b>"+current_char[0]+"</b>"))
         main_layout.addWidget(label_new,el+2,0)
         # цикл по всем выбранным к сравнению товарам
         for s in range(0,len(compareId)):
             current_comm=compareId[s]
             current_comm_value=queries.selectCharacteristicValue(current_comm, current_char[2], con)
             label_new=QtGui.QLabel(trUtf8(app,str(current_comm_value)))
             main_layout.addWidget(label_new,el+2,s+1)
     
     # добавление layout
     self.setLayout(main_layout)
     
示例#2
0
 def podcategor(self, value):
     ### изменяем текст слева ###
     self.label_left.setText(trUtf8(app,"Выберите требуемые характеристики товара:"))
       
     ### изменения на self.layout_right и self.layout_left
     ### при  попадании из разных состояний
     if self.condition==2:
         it=self.layout_right.itemAt(4)
         self.layout_right.removeItem(it)
     if self.condition in (3,4):
         it=self.layout_right.itemAt(5)
         self.layout_right.removeItem(it)
         self.layout_right.removeWidget(self.widget_inner)
         self.widget_inner.deleteLater()
         if self.condition ==4:
             self.layout_left.removeWidget(self.scr)
             self.scr.deleteLater()
             self.layout_left.removeWidget(self.comparebtn)
             self.comparebtn.deleteLater()
     
     # сохранение информации о текущей подкатегории
     info=queries.selectCategoryId(value, con)
     self.current_subcategory=str(info[0][0])
     
     # получение информации о характеристиках текущей подкатегории
     info=queries.selectAllFromCharacteristics(self.current_subcategory, con)
     
     # создание Widget и Layout для добавления на них элеметов
     self.widget_inner=QtGui.QWidget()
     self.widget_inner.setFixedWidth(self.RIGHTPARTWIDTH)
     self.layout_inner=QtGui.QVBoxLayout()
     
     # массивы с текущей информацией о набранных характеристиках
     self.widgets_array=[]
     self.ch_id_array=[]
     self.types_array=[]
     
     ### добавление элементов на widget_inner и в массив ###
     label_right3=QtGui.QLabel(trUtf8(app,"<center><b>Характеристики:</b></center>"))
     self.layout_inner.addWidget(label_right3)
     for el in info:     # цикл по каждой характеристике из выбранной подкатегории
         # el[0] - ch_name, el[1] - ch_type, el[2] - ch_id
         # добавляем label с названием характеристики
         text_for_label=QtCore.QString("<center>")
         text_for_label.append(trUtf8(app,el[0]))
         text_for_label.append("</center>")
         label_next=QtGui.QLabel(text_for_label,self.widget_inner)
         self.layout_inner.addWidget(label_next)
         ### добавляем формы для ввода её значений ###
         if el[1]=='ran':
             ### если это не перечислимая характеристика ###
             # создаём горизонтальный layout для компоновки форм
             layout_next=QtGui.QHBoxLayout()
             # создаём формы
             lab_next_from=QtGui.QLabel(trUtf8(app,"От"),self.widget_inner)
             l_e_next_from=QtGui.QLineEdit(self.widget_inner)
             lab_next_to=QtGui.QLabel(trUtf8(app,"До"),self.widget_inner)
             l_e_next_to=QtGui.QLineEdit(self.widget_inner)
             # по-умолчанию ставим минимальное и максимальное значение из базы
             minVal=queries.selectMinValueForCertainCharacteristic(el[2],self.current_subcategory,con)
             l_e_next_from.setText(str(minVal))
             maxVal=queries.selectMaxValueForCertainCharacteristic(el[2],self.current_subcategory,con)
             l_e_next_to.setText(str(maxVal))
             # соединяем формы со слотом
             self.connect(l_e_next_from, QtCore.SIGNAL("textEdited(QString)"),self,QtCore.SLOT("changeRanChar(QString)"))
             self.connect(l_e_next_to, QtCore.SIGNAL("textEdited(QString)"),self,QtCore.SLOT("changeRanChar(QString)"))
             # сохраняем инфо в массивы с текущей информацией
             self.widgets_array.append(l_e_next_from)
             self.ch_id_array.append(el[2])
             self.types_array.append('from')
             self.widgets_array.append(l_e_next_to)
             self.ch_id_array.append(el[2])
             self.types_array.append('to')
             # добавляем формы на виджет
             layout_next.addWidget(lab_next_from)
             layout_next.addWidget(l_e_next_from)
             layout_next.addWidget(lab_next_to)
             layout_next.addWidget(l_e_next_to)
             # добавляем внутренний layout в layout
             self.layout_inner.addLayout(layout_next)
         else:
             ### если это перечислимая характеристика ###
             # получение из БД всех возможных уникальных значений перечисления
             info2=queries.selectAllDistinctEnumValues(el[2],self.current_subcategory,con)
             # создание Combo и добавление значений перечисления
             combo_new=QtGui.QComboBox()
             # добавление значения "не важно"
             combo_new.addItem(trUtf8(app,"не важно"))
             # добавление остальных значений
             for el2 in info2:
                 combo_new.addItem(trUtf8(app,str(el2[0])))
             # соединяем форму со слотом
             self.connect(combo_new, QtCore.SIGNAL("activated(QString)"),self,QtCore.SLOT("changeEnChar(QString)"))
             # сохраняем инфо в массивы с текущей информацией
             self.widgets_array.append(combo_new)
             self.ch_id_array.append(el[2])
             self.types_array.append('en')
             # добавляем Combo на layout
             self.layout_inner.addWidget(combo_new)
         # добавляем небольшой отступ вниз
         self.layout_inner.addSpacing(self.CHARACSPACING)
         
     ### новое состояние ###
     # (стоит не в конце, т.к. changeChar требует 3 состояния)
     self.condition=3
         
     ### создание лейбла "Найдено" и кнопки "Показать" ###
     self.found=QtGui.QLabel(trUtf8(app,"Найдено : "),self.widget_inner)
     self.showbtn=QtGui.QPushButton(trUtf8(app,"Показать"))
     self.connect(self.showbtn,QtCore.SIGNAL("clicked()"),self,QtCore.SLOT("showResults()"))
     # запуск слота (первое изменение хар-к)
     self.changeChar("init")
     # Размещение их на layout
     layout_bottom=QtGui.QHBoxLayout()
     layout_bottom.addWidget(self.found)
     layout_bottom.addWidget(self.showbtn)
     self.layout_inner.addLayout(layout_bottom)
     
     ### добавление всего на правый Layout ###
     self.widget_inner.setLayout(self.layout_inner)
     self.layout_right.addWidget(self.widget_inner)
     self.layout_right.addStretch()