button.clicked.connect(action)
button.clicked.connect(action)
mousePressEvent
import sys from PyQt4 import QtGui, QtCore class Frame(QtGui.QFrame): signal = QtCore.pyqtSignal() def __init__(self): super(Frame, self).__init__() def indicators(self): self.p = 0 i = 48 self.indicator = [] while self.p != 8: self.indicator.append(QtGui.QFrame(self)) self.indicator[self.p].setFixedSize(17, 17) self.indicator[self.p].setStyleSheet("QWidget {background: #666;}") self.indicator[self.p].move(i, 60) self.indicator[self.p].signal.connect(self.click_on) self.p += 1 i += 25 def mousePressEvent(self, event): self.signal.emit() def click_on(self): self.indicator[1].setStyleSheet("QWidget {background: #ccc;}") 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.indicators(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 def main(): app = QtGui.QApplication(sys.argv) gui = Base() sys.exit(app.exec()) if __name__ == "__main__": main()
vrabeyМне нужно, чтобы фрейм реагировал на клик, меняя свой цвет. Да знаю, что есть ошибка. Как мне наследовать QFrame, что-то плохо у меня с ООП, простите.
MetalHeadа мог бы ты словами объяснить чего хочешь, что должен фрейм делать, и какие ошибки получаешьв твоём коде есть опечаткиу меня в таком виде он вообще не запускаетсячто бы кликнуть по виджету его надо отобразить а где у тебя фрейм отображается?
MetalHead
Мне нужно, чтобы фрейм реагировал на клик, меняя свой цвет
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui class Frame(QtGui.QFrame): def __init__(self, parent=None): QtGui.QFrame.__init__(self, parent) self.setFrameShape(QtGui.QFrame.Box) self.setLineWidth(5) self.setStyleSheet('color: {0};'.format('#000000')) def mousePressEvent(self, event, color=None): if color is None: color = 'green' self.setStyleSheet('color: {0};'.format(color)) class BaseWindow(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.resize(300, 200) self.frame = Frame(self) self.frame.setFixedSize(150, 150) if __name__ == '__main__': app = QtGui.QApplication(sys.argv) main = BaseWindow() main.show() sys.exit(app.exec_())
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui class Frame(QtGui.QFrame): def __init__(self, parent=None): QtGui.QFrame.__init__(self, parent) self.setFrameShape(QtGui.QFrame.Box) self.setLineWidth(5) self.setStyleSheet('color: {0};'.format('#000000')) self.color_selector = False self.color_1 = "black" self.color_2 = "green" def mousePressEvent(self, event): if self.color_selector: color = self.color_1 self.color_selector = not self.color_selector else: color = self.color_2 self.color_selector = not self.color_selector self.setStyleSheet('color: {0};'.format(color)) class BaseWindow(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.resize(300, 200) self.frame = Frame(self) self.frame.setFixedSize(150, 150) if __name__ == '__main__': app = QtGui.QApplication(sys.argv) main = BaseWindow() main.show() sys.exit(app.exec_())
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys from PyQt4 import QtGui class Frame(QtGui.QFrame): def __init__(self, parent=None): QtGui.QFrame.__init__(self, parent) self.setFrameShape(QtGui.QFrame.Box) self.setLineWidth(5) self.colr = self.setStyleSheet('QWidget {background: red;}') self.color = "red" def mousePressEvent(self, event): if self.color is "red": self.setStyleSheet('QWidget {background:green;}') self.color = "green" else: self.setStyleSheet('QWidget {background: red;}') self.color = "red" return class BaseWindow(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.resize(300, 200) self.frame = Frame(self) self.frame.setFixedSize(150, 150) if __name__ == '__main__': app = QtGui.QApplication(sys.argv) main = BaseWindow() main.show() sys.exit(app.exec_())