Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 29, 2014 13:26:47

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

Голова кипит, помогите. Практики мало, извиняюсь. Как сделать так чтобы в словарь корректно добавлялся фрейм?

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)

Офлайн

#2 Авг. 29, 2014 13:43:34

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

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)

Офлайн

#3 Авг. 29, 2014 13:50:32

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

vrabey
зачем словарь
цель добавления
опиши задачу
Словарь для того, чтобы не создавать QFrame аж 8 раз. Т.e. создает новый элемент в словаре. А остальное сразу для назначения местоположения и стилей.

Офлайн

#4 Авг. 29, 2014 13:58:11

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

MetalHead
Словарь для того, чтобы не создавать QFrame аж 8 раз. Т.e. создает новый элемент в словаре
не понял
просто опиши чего ты хочешь от окна
1. что видим?
2. что происходит с окном (кнопкой, фреймом) когда кликаем?

Офлайн

#5 Авг. 29, 2014 14:07:52

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

Вот, смотрите скрин.

Прикреплённый файлы:
attachment py.png (37,5 KБ)

Офлайн

#6 Авг. 29, 2014 14:12:45

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

MetalHead

sys.exit(app.exec())
здесь ошибка синтаксиса,

а с картинкой сейчас разберёмся

Офлайн

#7 Авг. 29, 2014 14:15:23

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

vrabey
У вас аська есть?

Офлайн

#8 Авг. 29, 2014 14:49:39

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

MetalHead
У вас аська есть
skype

Офлайн

#9 Авг. 29, 2014 14:50:19

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

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)

Офлайн

#10 Авг. 29, 2014 14:54:16

MetalHead
От: Ленгер
Зарегистрирован: 2013-12-17
Сообщения: 88
Репутация: +  1  -
Профиль   Отправить e-mail  

QFrame. Привязать сигнал

vrabey
skype
Тоже сойдет. Дайте пожалуйста.
Спасибо, буду разбираться.

Отредактировано MetalHead (Авг. 29, 2014 14:57:24)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version