Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 14, 2007 14:50:58

aliens
От:
Зарегистрирован: 2007-08-14
Сообщения: 135
Репутация: +  1  -
Профиль   Отправить e-mail  

помогите понять пример PyQt

Здравствуйте!
Вот решил осваивать питон и Qt ( питон немного освоил без ООП, начал Qt), и вот,в примерах PyQt, нашел пример аналоговых часов. Вот он :
import sys
from PyQt4 import QtCore, QtGui


class AnalogClock(QtGui.QWidget):
hourHand = QtGui.QPolygon([
QtCore.QPoint(7, 8),
QtCore.QPoint(-7, 8),
QtCore.QPoint(0, -40)
])

minuteHand = QtGui.QPolygon([
QtCore.QPoint(7, 8),
QtCore.QPoint(-7, 8),
QtCore.QPoint(0, -70)
])

hourColor = QtGui.QColor(127, 0, 127)
minuteColor = QtGui.QColor(0, 127, 127, 191)

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

timer = QtCore.QTimer(self)
self.connect(timer, QtCore.SIGNAL(“timeout()”), self, QtCore.SLOT(“update()”))
timer.start(1000)

self.setWindowTitle(self.tr(“Analog Clock”))
self.resize(200, 200)

def paintEvent(self, event):
side = min(self.width(), self.height())
time = QtCore.QTime.currentTime()

painter = QtGui.QPainter(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.translate(self.width() / 2, self.height() / 2)
painter.scale(side / 200.0, side / 200.0)

painter.setPen(QtCore.Qt.NoPen)
painter.setBrush(AnalogClock.hourColor)

painter.save()
painter.rotate(30.0 * ((time.hour() + time.minute() / 60.0)))
painter.drawConvexPolygon(AnalogClock.hourHand)
painter.restore()

painter.setPen(AnalogClock.hourColor)

for i in range(12):
painter.drawLine(88, 0, 96, 0)
painter.rotate(30.0)

painter.setPen(QtCore.Qt.NoPen)
painter.setBrush(AnalogClock.minuteColor)

painter.save()
painter.rotate(6.0 * (time.minute() + time.second() / 60.0))
painter.drawConvexPolygon(AnalogClock.minuteHand)
painter.restore()

painter.setPen(AnalogClock.minuteColor)

for j in range(60):
if (j % 5) != 0:
painter.drawLine(92, 0, 96, 0)
painter.rotate(6.0)


if __name__ == “__main__”:
app = QtGui.QApplication(sys.argv)
clock = AnalogClock()
clock.show()
sys.exit(app.exec_())
Подскажите, когда выполняется paintEvent? а то нету ее вызовов, думал из за таймера и слова event в функции… но сделал другой пример, и ничего не произошло..
Подскажите пожалуйста
P.S.не подскажите толковую статейку про ООП ?



Отредактировано (Авг. 14, 2007 15:19:45)

Офлайн

#2 Авг. 14, 2007 15:50:30

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите понять пример PyQt

aliens
paintEvent из AnalogClock переопределяет painEvent из своего базового классаQWidget. Он автоматически вызывается когда требуется перерисовать виджет. За более подробной информацией обратись к докам по QWidget.

aliens
P.S.не подскажите толковую статейку про ООП ?
Java я не очень люблю, но мне в качестве статейки по ООП нравится книга Гослинга ‘Язык программирования Java’ :)



Офлайн

#3 Авг. 14, 2007 17:50:18

aliens
От:
Зарегистрирован: 2007-08-14
Сообщения: 135
Репутация: +  1  -
Профиль   Отправить e-mail  

помогите понять пример PyQt

slivlen
Большое спасибо.
Я подумал, что так и есть,что переопределяется.



Офлайн

#4 Авг. 20, 2007 17:55:43

aliens
От:
Зарегистрирован: 2007-08-14
Сообщения: 135
Репутация: +  1  -
Профиль   Отправить e-mail  

помогите понять пример PyQt

чтобы не создавать еще 1 тему,задам тут…
как получить индекс текущего значения в QComboBox?

spisok = QtGui.QComboBox(defframe)
spisok.setEditable(False)
self.connect(spisok, QtCore.SIGNAL(“highlighted()”), self.log-to_console )
def log_to_console( self, log ):
print log

Хочу,чтобы при изменении активного элемента в списке, его индекс писался в консоль… вот ^^ не рабоатет :( пробовал еще сигнал activated()… н оен рабоатет



Отредактировано (Авг. 20, 2007 17:56:39)

Офлайн

#5 Авг. 21, 2007 00:35:56

aliens
От:
Зарегистрирован: 2007-08-14
Сообщения: 135
Репутация: +  1  -
Профиль   Отправить e-mail  

помогите понять пример PyQt

вопрсо снят,нашел проблему, в сигнале надо было (int)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version