Форум сайта python.su
Голова кипит, помогите. Практики мало, извиняюсь. Как сделать так чтобы в словарь корректно добавлялся фрейм?
import sys from PyQt4 import QtGui class Frame(QtGui.QFrame): def __init__(self, parent=None): self.p = 0 i = 48 QtGui.QFrame.__init__(self, parent) self.indicator = [] self.color = "red" while self.p != 8: self.indicator.append(self) # как сюда воткнуть этот фрейм? self.indicator[self.p].setFixedSize(17, 17) self.indicator[self.p].setStyleSheet("QWidget {background: #666;}") self.indicator[self.p].move(i, 60) self.p += 1 i += 25 def mousePressEvent(self, event): if self.color is "red": self.indicator[1].setStyleSheet('QWidget {background:green;}') self.color = "green" print ("JR") else: self.setStyleSheet('QWidget {background: red;}') self.color = "red" class Base(QtGui.QWidget): def __init__(self): super(Base, self).__init__() self.startUW() def startUW(self): self.fields() record = QtGui.QPushButton("Записать", self) record.move(100, 18) play = QtGui.QPushButton("Проиграть", self) play.move(190, 18) Frame(self) self.setWindowTitle("Indicator Generator v0.1") self.setFixedSize(300, 250) self.move(300, 250) self.show() def fields(self): p = 0 i = 10 self.field = [] while p != 2: self.field.append(QtGui.QLineEdit(self)) self.field[p].setFixedSize(40, 25) self.field[p].move(i, 20) p += 1 i += 45 def main(): app = QtGui.QApplication(sys.argv) gui = Base() sys.exit(app.exec()) if __name__ == "__main__": main()
Отредактировано MetalHead (Авг. 29, 2014 13:27:01)
Офлайн
MetalHeadне понятно чего ты хочешь
Как сделать так чтобы в словарь корректно добавлялся фрейм?
while self.p != 8: self.indicator.append(self) # как сюда воткнуть этот фрейм? self.indicator[self.p].setFixedSize(17, 17) self.indicator[self.p].setStyleSheet("QWidget {background: #666;}") self.indicator[self.p].move(i, 60) self.p += 1 i += 25
Отредактировано vrabey (Авг. 29, 2014 13:45:40)
Офлайн
vrabeyСловарь для того, чтобы не создавать QFrame аж 8 раз. Т.e. создает новый элемент в словаре. А остальное сразу для назначения местоположения и стилей.
зачем словарь
цель добавления
опиши задачу
Офлайн
MetalHeadне понял
Словарь для того, чтобы не создавать QFrame аж 8 раз. Т.e. создает новый элемент в словаре
Офлайн
Вот, смотрите скрин.
Прикреплённый файлы:
py.png (37,5 KБ)
Офлайн
MetalHead
sys.exit(app.exec())
Офлайн
vrabey
У вас аська есть?
Офлайн
MetalHeadskype
У вас аська есть
Офлайн
import sys from PyQt4 import QtGui class Frame(QtGui.QFrame): def __init__(self, parent=None): """ здесь просто описываем макет фрейма свойства и методы :param parent: """ QtGui.QFrame.__init__(self, parent) self.x = 17 self.y = 17 self.color = "red" self.setStyleSheet('background: {0};'.format(self.color)) self.setFrameShape(QtGui.QFrame.Box) self.setFixedSize(self.x, self.y) def mousePressEvent(self, event): if self.color is "red": self.setStyleSheet('QWidget {background:green;}') self.color = "green" print ("JR") else: self.setStyleSheet('QWidget {background: red;}') self.color = "red" class Base(QtGui.QWidget): def __init__(self): super(Base, self).__init__() self.startUW() self.fields() def startUW(self): record = QtGui.QPushButton(u"Записать", self) record.move(100, 18) play = QtGui.QPushButton(u"Проиграть", self) play.move(190, 18) self.setWindowTitle("Indicator Generator v0.1") self.setFixedSize(300, 250) self.move(300, 250) self.add_frames() # c 55 по 62 строку закоментировать после прочтения # написал так что бы было понятнее # а здесь создаём экземпляр класса self.frame_1 = Frame(self) # как то его размещаем self.frame_1.move(48, 60) # ещё экземпляр self.frame_1 = Frame(self) # и как то его размещаем self.frame_1.move(48 + 25, 60) def add_frames(self, count=8): distance = 25 start_x = 48 y = 60 for i in range(count): self.frame_1 = Frame(self) self.frame_1.move(start_x, y) start_x += distance def fields(self): i = 10 self.field = [] for name in range(2): self.field.append(QtGui.QLineEdit(self)) self.field[name].setFixedSize(40, 25) self.field[name].move(i, 20) i += 45 def main(): app = QtGui.QApplication(sys.argv) gui = Base() gui.show() sys.exit(app.exec_()) if __name__ == "__main__": main()
Отредактировано vrabey (Авг. 29, 2014 14:53:23)
Офлайн
vrabeyТоже сойдет. Дайте пожалуйста.
skype
Отредактировано MetalHead (Авг. 29, 2014 14:57:24)
Офлайн