国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現模擬時鐘代碼推薦

2019-11-25 17:02:53
字體:
來源:轉載
供稿:網友

Python實現模擬時鐘代碼推薦

# coding=utf8import sys, pygame, math, randomfrom pygame.locals import *from datetime import datetime, date, time  def print_text(font, x, y, text, color=(255,255,255)):  imgtext = font.render(text, True, color)  screen.blit(imgtext, (x,y)) def wrap_angle(angle):  return abs(angle%360) # mainpygame.init()screen = pygame.display.set_mode((600,500))pygame.display.set_caption("CLOCK")font = pygame.font.Font(None, 36)orange = 220,180,0white = 255,255,255yellow = 255,255,0pink = 255,100,100 pos_x = 300pos_y = 250radius = 250angle = 360 # repeating loopwhile True:  for event in pygame.event.get():    if event.type == QUIT:      sys.exit()   keys = pygame.key.get_pressed()  if keys[K_ESCAPE]:    sys.exit()   screen.fill((0,0,100))   # draw circle  pygame.draw.circle(screen, white, (pos_x,pos_y), radius, 6)   # draw the clock number 1-12  for n in range(1,13):    angle = math.radians(n*(360/12)-90)    x = math.cos(angle)*(radius-20)-10    y = math.sin(angle)*(radius-20)-10    print_text(font, pos_x+x, pos_y+y, str(n))   # get the time of day  today = datetime.today()  hours = today.hour%12  minutes = today.minute  seconds = today.second   # draw the hours hand  hour_angle = wrap_angle(hours*(360/12)-90)  hour_angle = math.radians(hour_angle)  hour_x = math.cos(hour_angle)*(radius-80)  hour_y = math.sin(hour_angle)*(radius-80)  target = (pos_x+hour_x, pos_y+hour_y)  pygame.draw.line(screen, pink, (pos_x,pos_y), target, 12)   # draw the minutes hand  min_angle = wrap_angle(minutes*(360/60)-90)  min_angle = math.radians(min_angle)  min_x = math.cos(min_angle)*(radius-60)  min_y = math.sin(min_angle)*(radius-60)  target = (pos_x+min_x, pos_y+min_y)  pygame.draw.line(screen, orange, (pos_x,pos_y), target, 12)   # draw the seconds hand  sec_angle = wrap_angle(seconds*(360/60)-90)  sec_angle = math.radians(sec_angle)  sec_x = math.cos(sec_angle)*(radius-40)  sec_y = math.sin(sec_angle)*(radius-40)  target = (pos_x+sec_x, pos_y+sec_y)  pygame.draw.line(screen, yellow, (pos_x,pos_y), target, 12)   # draw the center  pygame.draw.circle(screen, white, (pos_x,pos_y), 20)   print_text(font, 0, 0, str(hours) + ":" + str(minutes) + ":" + str(seconds))  pygame.display.update()

再來一個例子

import sysfrom PyQt4 import QtGui, QtCore from PyQt4.QtCore import Qtfrom PyQt4.QtCore import QPointfrom PyQt4.QtCore import QTimerfrom PyQt4.QtCore import QTime from PyQt4.QtGui import QPainterfrom PyQt4.QtGui import QColor from PyQt4.QtGui import QPolygonfrom PyQt4.QtCore import SIGNAL as signalclass Clock(QtGui.QWidget):  '''  classdocs  '''  def __init__(self):    '''    Constructor    '''    super(Clock, self).__init__()     self.hourColor=QColor(127, 0, 127);    self.minuteColor=QColor(0, 127, 127, 191)    self.secondColor=QColor(127, 127,0,120)    self.initUI()    self.timer = QTimer()    self.timer.timeout.connect(self.update)    self.timer.start(30)     self.show()  def handChange(self):      self.side = min(self.width(), self.height())    self.hand=(max(self.side/200,4), max(self.side/100,8), max(self.side/40,30))    self.hourHand=QPolygon([QPoint(self.hand[0],self.hand[1]),QPoint(-self.hand[0],self.hand[1]),QPoint(0,-self.hand[2])])    self.minuteHand=QPolygon([QPoint(self.hand[0],self.hand[1]),QPoint(-self.hand[0],self.hand[1]),QPoint(0,-self.hand[2]*2)])    self.secondHand=QPolygon([QPoint(self.hand[0],self.hand[1]),QPoint(-self.hand[0],self.hand[1]),QPoint(0,-self.hand[2]*3)])   def set_transparency(self, enabled):    if enabled:      self.setAutoFillBackground(False)    else:      self.setAttribute(Qt.WA_NoSystemBackground, False)    #下面這種方式好像不行#    pal=QtGui.QPalette()#    pal.setColor(QtGui.QPalette.Background, QColor(127, 127,10,120))#    self.setPalette(pal)     self.setAttribute(Qt.WA_TranslucentBackground, enabled)    self.repaint()  def initUI(self):       self.setGeometry(300, 300, 300, 200)    self.setWindowTitle('Clock')    self.handChange()    self.rightButton=False    # 下面兩個配合實現窗體透明和置頂    sizeGrip=QtGui.QSizeGrip(self)    self.setWindowFlags(Qt.FramelessWindowHint|Qt.WindowStaysOnTopHint|Qt.SubWindow )     #self.setMouseTracking(True);    self.trans=True    self.set_transparency(True)     quitAction = QtGui.QAction(QtGui.QIcon('quit.png'), '&Quit', self)    self.connect(quitAction,signal("triggered()"),QtGui.qApp.quit)    backAction = QtGui.QAction( '&Back', self)    self.connect(backAction,signal("triggered()"),self.backClicked)    self.popMenu= QtGui.QMenu()     self.popMenu.addAction(quitAction)     self.popMenu.addAction(backAction)   def resizeEvent(self, e):     self.handChange()  def backClicked(self):    if self.trans == True :      self.trans = False       self.set_transparency(False)    else:       self.trans = True       self.set_transparency(True)  def mouseReleaseEvent(self,e):     if self.rightButton == True:      self.rightButton=False      self.popMenu.popup(e.globalPos())  def mouseMoveEvent(self, e):    if e.buttons() & Qt.LeftButton:      self.move(e.globalPos()-self.dragPos)      e.accept()  def mousePressEvent(self, e):    if e.button() == Qt.LeftButton:       self.dragPos=e.globalPos()-self.frameGeometry().topLeft()       e.accept()    if e.button() == Qt.RightButton and self.rightButton == False:      self.rightButton=True  def paintEvent(self, e):     time = QTime.currentTime()     qp = QPainter()    qp.begin(self)    qp.setRenderHint(QPainter.Antialiasing) # 開啟這個抗鋸齒,會很占cpu的!    qp.translate(self.width() / 2, self.height() / 2)     qp.scale(self.side / 200.0, self.side / 200.0)    qp.setPen(QtCore.Qt.NoPen)    qp.setBrush(self.hourColor)    qp.save()    qp.rotate(30.0 * ((time.hour() + time.minute()/ 60.0)))    qp.drawConvexPolygon(self.hourHand)    qp.restore()    qp.setPen(self.hourColor)    for i in range(12):       qp.drawLine(88, 0, 96, 0)      qp.rotate(30.0)     qp.setPen(QtCore.Qt.NoPen)    qp.setBrush(self.minuteColor)    qp.save()    qp.rotate(6.0 * ((time.minute() + (time.second()+time.msec()/1000.0) / 60.0)))    qp.drawConvexPolygon(self.minuteHand)    qp.restore()    qp.setPen(self.minuteColor)    for i in range(60):       if (i % 5) is not 0:        qp.drawLine(92, 0, 96, 0)      qp.rotate(6.0)     qp.setPen(QtCore.Qt.NoPen)    qp.setBrush(self.secondColor)    qp.save()    qp.rotate(6.0*(time.second()+time.msec()/1000.0))    qp.drawConvexPolygon(self.secondHand)    qp.restore()     qp.end() if __name__ == '__main__':  app = QtGui.QApplication(sys.argv)  clock = Clock()  sys.exit(app.exec_())

例三:

主要是模仿了qt自帶的clock例子,然后 通過 python的語法 進行實現,
同時添加了秒針 的實現
用到的工具 有qt 4.8;python 2.7 ;pyqt

import sysfrom PyQt4.QtCore import *from PyQt4.QtGui import *class clock (QWidget):  def __init__(self):    QWidget.__init__(self,windowTitle="python clock")    timer = QTimer(self)    self.connect(timer, SIGNAL("timeout()"),self,SLOT("update()"))    timer.start(1000)    self.resize(200,200)  def paintEvent(self,e):    hourColorHand = QPolygon([QPoint(7,8),QPoint(-7,8),QPoint(0,-30)])    minuteColorHand = QPolygon([QPoint(7,8),QPoint(-7,8),QPoint(0,-70)])    secondColorHand = QPolygon([QPoint(3,8),QPoint(-3,8),QPoint(0,-90)])    hourColor = QColor(127,0,127)    minuteColor = QColor(0,127,127,191)    secondColor = QColor(0,100,100,100)    painter = QPainter(self);    side = min(self.width(),self.height())    atime =QTime.currentTime()    painter.setRenderHint(QPainter.Antialiasing)    painter.translate(self.width()/2,self.height()/2)    painter.scale(side/200,side/200)    painter.setPen(Qt.NoPen)    painter.setBrush(hourColor)    painter.save()    painter.rotate(30.0*(atime.hour() + atime.minute()/60.0))    painter.drawConvexPolygon(hourColorHand)    painter.restore()    painter.setPen(hourColor)    for i in range(0,12):     painter.drawLine(88,0,96,0)     painter.rotate(30.0)    painter.setPen(Qt.NoPen)    painter.setBrush(minuteColor)    painter.save()    painter.rotate(6.0*(atime.minute()+atime.second()/60.0))    painter.drawConvexPolygon(minuteColorHand)    painter.restore()    painter.setPen(minuteColor)    for i in range(0,60) :     if (i%5)!=0 :       painter.drawLine(92,0,96,0)     painter.rotate(6.0)    painter.setPen(Qt.NoPen)    painter.setBrush(secondColor)    painter.save()    painter.rotate(6.0 * atime.second())    painter.drawConvexPolygon(secondColorHand)    painter.restore()if __name__ == "__main__" :   q = QApplication(sys.argv)   s = clock()   s.show()   q.exec_()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆化县| 普陀区| 新昌县| 秦安县| 延吉市| 济阳县| 连城县| 富源县| 五寨县| 名山县| 温泉县| 定兴县| 洮南市| 唐河县| 禹州市| 获嘉县| 响水县| 鹤岗市| 定边县| 鄄城县| 土默特左旗| 甘洛县| 永济市| 连州市| 修水县| 宁德市| 婺源县| 沅陵县| 元朗区| 宁国市| 濮阳市| 海兴县| 西宁市| 尼勒克县| 盘锦市| 伊宁市| 浙江省| 霍邱县| 新河县| 姚安县| 灵台县|