Python实现模拟时钟代码推荐
网络编程
Python实现模拟时钟代码推荐
# 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()
再来一个例子
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
# 下面两个配合实现窗体透明和置顶
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 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_()
使用Python对IP进行转换的一些操作技巧小结
PythonSocket模块中包含一些有用IP转换函数,说明如下:socket.ntohl(x)//类似于C语言的ntohl(x)把32位正整数从网络序转换成主机字节序。socket.ntohs(x)//类似于C
Python中MySQLdb和torndb模块对MySQL的断连问题处理
在使用python对wordpresstag进行细化代码处理时,遇到了调用MySQLdb模块时的出错,由于错误提示和问题原因相差甚远,查看了N久代码也未发现代码有问题。
使用Python实现BT种子和磁力链接的相互转换
bt种子文件转换为磁力链接BT种子文件相对磁力链来说存储不方便,而且在网站上存放BT文件容易引起版权纠纷,而磁力链相对来说则风险小一些。而且
编辑:568数据
标签:磁力,代码,模块,种子,文件