最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)模擬時(shí)鐘代碼推薦

 更新時(shí)間:2015年11月08日 11:23:51   投稿:hebedich  
本文給大家匯總介紹了下使用Python實(shí)現(xiàn)模擬時(shí)鐘的代碼,一共3個(gè)例子,后兩個(gè)是基于QT實(shí)現(xiàn),有需要的小伙伴可以參考下

Python實(shí)現(xiàn)模擬時(shí)鐘代碼推薦

# coding=utf8
import sys, pygame, math, random
from 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)
 
# main
pygame.init()
screen = pygame.display.set_mode((600,500))
pygame.display.set_caption("CLOCK")
font = pygame.font.Font(None, 36)
orange = 220,180,0
white = 255,255,255
yellow = 255,255,0
pink = 255,100,100
 
pos_x = 300
pos_y = 250
radius = 250
angle = 360
 
# repeating loop
while 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()

再來一個(gè)例子

import sys
from PyQt4 import QtGui, QtCore 
from PyQt4.QtCore import Qt
from PyQt4.QtCore import QPoint
from PyQt4.QtCore import QTimer
from PyQt4.QtCore import QTime 
from PyQt4.QtGui import QPainter
from PyQt4.QtGui import QColor 
from PyQt4.QtGui import QPolygon
from PyQt4.QtCore import SIGNAL as signal

class 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
    # 下面兩個(gè)配合實(shí)現(xiàn)窗體透明和置頂
    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) # 開啟這個(gè)抗鋸齒,會(huì)很占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的語法 進(jìn)行實(shí)現(xiàn),
同時(shí)添加了秒針 的實(shí)現(xiàn)
用到的工具 有qt 4.8;python 2.7 ;pyqt

import sys
from 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_()

相關(guān)文章

  • Python實(shí)現(xiàn)將json文件生成C語言的結(jié)構(gòu)體的腳本分享

    Python實(shí)現(xiàn)將json文件生成C語言的結(jié)構(gòu)體的腳本分享

    這篇文章主要為大家詳細(xì)介紹了Python如何實(shí)現(xiàn)將json文件生成C語言的結(jié)構(gòu)體,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-09-09
  • Pygame如何使用精靈和碰撞檢測

    Pygame如何使用精靈和碰撞檢測

    本文主要介紹了Pygame如何使用精靈和碰撞檢測,它們能夠幫助我們跟蹤屏幕上移動(dòng)的大量圖像。我們還會(huì)了解如何檢測兩個(gè)圖像相互重疊或者碰撞的方法。
    2021-11-11
  • 詳解Python不同版本之間的切換方法

    詳解Python不同版本之間的切換方法

    本文主要介紹了詳解Python不同版本之間的切換方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 解決PyQt5 無邊框后窗口的移動(dòng)問題

    解決PyQt5 無邊框后窗口的移動(dòng)問題

    這篇文章主要介紹了解決PyQt5 無邊框后窗口的移動(dòng)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,一起跟隨小編過來看看吧
    2021-03-03
  • 關(guān)于Python的各種文件操作

    關(guān)于Python的各種文件操作

    這篇文章主要介紹了關(guān)于Python的各種文件操作,適合剛?cè)腴T的小白或者對(duì)于文件操作基礎(chǔ)不太牢固的同學(xué),需要的朋友可以參考下
    2023-04-04
  • Python實(shí)現(xiàn)隨機(jī)分層抽樣的示例詳解

    Python實(shí)現(xiàn)隨機(jī)分層抽樣的示例詳解

    在數(shù)據(jù)分析與機(jī)器學(xué)習(xí)的實(shí)踐中,抽樣是不可或缺的一步,分層抽樣作為一種常用的抽樣方法,能夠確保樣本在不同類別中的比例與總體一致,下面我們看看如何使用Python實(shí)現(xiàn)隨機(jī)分層抽樣吧
    2024-11-11
  • 向量化操作改進(jìn)數(shù)據(jù)分析工作流的Pandas?Numpy示例分析

    向量化操作改進(jìn)數(shù)據(jù)分析工作流的Pandas?Numpy示例分析

    這篇文章主要介紹了向量化操作改進(jìn)數(shù)據(jù)分析工作流的Pandas?Numpy示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • 淺析python 通⽤爬⾍和聚焦爬⾍

    淺析python 通⽤爬⾍和聚焦爬⾍

    這篇文章主要介紹了python 通⽤爬⾍和聚焦爬⾍的相關(guān)資料,幫助大家更好的了解和使用python 爬蟲,感興趣的朋友可以了解下
    2020-09-09
  • python多線程掃描端口示例

    python多線程掃描端口示例

    這篇文章主要介紹了python多線程掃描端口示例,大家參考使用吧
    2014-01-01
  • Python基礎(chǔ)學(xué)習(xí)之模塊的安裝和卸載

    Python基礎(chǔ)學(xué)習(xí)之模塊的安裝和卸載

    其實(shí)現(xiàn)在還是有很多剛開始學(xué)習(xí)的小伙伴,會(huì)遇到模塊不會(huì)安裝的情況,或者一遇到報(bào)錯(cuò)就懵了,這樣就很耽誤我們的學(xué)習(xí)進(jìn)度。所以,今天我們就來了解一下Python幾種安裝模塊的方法吧
    2022-09-09

最新評(píng)論

临夏市| 牟定县| 安达市| 稷山县| 鄯善县| 阿鲁科尔沁旗| 彩票| 文登市| 葵青区| 苏州市| 丰原市| 南安市| 资阳市| 泾阳县| 牟定县| 兴文县| 格尔木市| 金坛市| 杨浦区| 南木林县| 杭锦后旗| 厦门市| 烟台市| 上蔡县| 郁南县| 丹巴县| 内黄县| 新密市| 曲松县| 蓬安县| 永川市| 北流市| 青阳县| 洪泽县| 杭州市| 屯留县| 游戏| 尖扎县| 郯城县| 桓仁| 工布江达县|