欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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搭建一個(gè)花卉識(shí)別系統(tǒng)

    用python搭建一個(gè)花卉識(shí)別系統(tǒng)

    這學(xué)期修了一門機(jī)器視覺的選修課,課設(shè)要是弄一個(gè)花卉識(shí)別的神經(jīng)網(wǎng)絡(luò),所以我網(wǎng)上找了開源代碼進(jìn)行了修改,最后成功跑起來,結(jié)果只有一個(gè)準(zhǔn)確率(94%)既然都跑了這個(gè)神經(jīng)網(wǎng)絡(luò)的代碼,那么干脆就把這個(gè)神經(jīng)網(wǎng)絡(luò)真正的使用起來,把這個(gè)神經(jīng)網(wǎng)絡(luò)弄成一個(gè)可視化界面
    2021-06-06
  • pycharm 關(guān)閉search everywhere的解決操作

    pycharm 關(guān)閉search everywhere的解決操作

    這篇文章主要介紹了pycharm 關(guān)閉search everywhere的解決操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Pytorch?linear?多維輸入的參數(shù)問題

    Pytorch?linear?多維輸入的參數(shù)問題

    這篇文章主要介紹了Pytorch?linear多維輸入的參數(shù)的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • PyTorch定義Tensor及索引和切片(最新推薦)

    PyTorch定義Tensor及索引和切片(最新推薦)

    這篇文章主要介紹了PyTorch定義Tensor以及索引和切片,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 解析python實(shí)現(xiàn)Lasso回歸

    解析python實(shí)現(xiàn)Lasso回歸

    Lasso是一個(gè)線性模型,它給出的模型具有稀疏的系數(shù)。接下來通過本文給大家分享python實(shí)現(xiàn)Lasso回歸的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2019-09-09
  • Python中正則表達(dá)式對(duì)單個(gè)字符,多個(gè)字符和匹配邊界等使用

    Python中正則表達(dá)式對(duì)單個(gè)字符,多個(gè)字符和匹配邊界等使用

    這篇文章主要介紹了Python中正則表達(dá)式對(duì)單個(gè)字符,多個(gè)字符和匹配邊界等使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 壓縮包密碼破解示例分享(類似典破解)

    壓縮包密碼破解示例分享(類似典破解)

    有一個(gè)壓縮包密碼忘了,寫了一個(gè)小腳本實(shí)現(xiàn)一個(gè)解密的功能,輸入自己常用密碼中的單詞后,腳本將這些密碼組合嘗試解壓壓縮包
    2014-01-01
  • 使用Python實(shí)現(xiàn)將list中的每一項(xiàng)的首字母大寫

    使用Python實(shí)現(xiàn)將list中的每一項(xiàng)的首字母大寫

    今天小編就為大家分享一篇使用Python實(shí)現(xiàn)將list中的每一項(xiàng)的首字母大寫,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • python內(nèi)存管理機(jī)制原理詳解

    python內(nèi)存管理機(jī)制原理詳解

    這篇文章主要介紹了python內(nèi)存管理機(jī)制原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 關(guān)于python中的xpath解析定位

    關(guān)于python中的xpath解析定位

    這篇文章主要介紹了關(guān)于python中的xpath解析定位,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03

最新評(píng)論