python时钟
1. python可以制作时钟吗
调试调试,参考参考
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_())
2. python问题 求解
#python6.6
classClock:
def__init__(self,hour,minute,second):
self.h=hour
self.m=minute
self.s=second
defprintTime(self):
#{:+0填充+右对齐+固定宽度2+数据类型整数}
print("{:>2d}:{:0>2d}:{:0>2d}".format(self.h,self.m,self.s))
deftest():
hs=[8,9,10]
ms=[30,45,5]
ss=[0,15,49]
c1=Clock(hs[0],ms[0],ss[0])
c2=Clock(hs[1],ms[1],ss[1])
c3=Clock(hs[2],ms[2],ss[2])
c1.printTime()
c2.printTime()
c3.printTime()
if__name__=="__main__":
test()
我测试没问题。
3. 用Python中threading模块怎么实现线程间时钟同步
用一个全局变量来保存这个时钟。其实线程直接访问这个全局的变量来获取时钟信息。
4. python怎么修改linux系统时间
1、修改系统时间。 linux系统时钟有两个,一个是硬件时钟,即BIOS时间,就是我们进行CMOS设置时看到的时间,另一个是系统时钟,是linux系统Kernel时间。当Linux启动时,系统Kernel会去读取硬件时钟的设置,然后系统时钟就会独立于硬件运作。
5. python time.clock 和time.time的区别
一,两个函数的文档:
1,time.time():
time.time()
Return
the time in seconds since the epoch as a floating point number. Note
that even though the time is always returned as a floating point number,
not all systems provide time with a better precision than 1 second.
While this function normally returns non-decreasing values, it can
return a lower value than a previous call if the system clock has been
set back between the two calls.
time.time()
返回从纪元(1970.1.1)至今的秒数。虽然这个函数的返回值永远为浮点数,但并不是所有系统提供的秒数都会精确到小数点以后。一般情况下这个函数的返回值不会小于它上一次被调用的返回值,除非系统时钟在两次调用之间发生了重置。
2,time.clock():
time.clock()
On
Unix, return the current processor time as a floating point number
expressed in seconds. The precision, and in fact the very definition of
the meaning of “processor time”, depends on that of the C function of
the same name, but in any case, this is the function to use for
benchmarking Python or timing algorithms.
On Windows, this
function returns wall-clock seconds elapsed since the first call to this
function, as a floating point number, based on the Win32 function QueryPerformanceCounter(). The resolution is typically better than one microsecond.
time.clock()
在Unix 中,将当前的处理器时间以浮点数的形式返回,单位为秒。它的精确度(准确地说是“处理器时间”的精确度)取决于同名的C函数,无论如何,这个函数是python关于时间计算的标尺。
WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后的调用是自第一次调用以后到现在的运行时间。(实际上是以WIN32上QueryPerformanceCounter()为基础,它比毫秒表示更为精确)
二,用法及总结
1,在Windows中,time.clock()更精确;
2,这两个函数不可以混合使用;
6. Python语言写秒表计时器的GUI的方法
tk就是最基础的,一些好的你需要wxpython或qt。数字时钟倒是可以实现
7. 用python,turtle绘制数字,如绘制260这三个数字,同时要求每个数字填不同的颜色
1、双击打开pycharm开发工具,在已新建的项目中新建python文件,输入文件名称。
8. python 时钟嘀嗒数获取
你可以试下下面的方式来取得当前时间的时间戳:
import time
print time.time()
输出的结果是:
1279578704.6725271
但是这样是一连串的数字不是我们想要的结果,我们可以利用time模块的格式化时间的方法来处理:
time.localtime(time.time())
用time.localtime()方法,作用是格式化时间戳为本地的时间。
输出的结果是:
time.struct_time(tm_year=2010, tm_mon=7, tm_mday=19, tm_hour=22, tm_min=33, tm_sec=39, tm_wday=0, tm_yday=200, tm_isdst=0)
现在看起来更有希望格式成我们想要的时间了。
time.strftime('%Y-%m-%d',time.localtime(time.time()))
最后用time.strftime()方法,把刚才的一大串信息格式化成我们想要的东西,现在的结果是:
2010-07-19
time.strftime里面有很多参数,可以让你能够更随意的输出自己想要的东西:
下面是time.strftime的参数:
strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
9. 为什么在python中是ioc / di不常见
1. 其实我不认为直接投资/ IoC是在Python。什么是却是直接投资/ IoC。
想想看:什么是一个DI容器呢?它可以让你
连线连成应用程序...
...在
我们有“接线合”及“
脚本
动态
所以,一个DI容器不过是一个解释的动态脚本语言。实际上,另一种方式是:一个典型的Java / .NET的DI容器不过是一个蹩脚的解释器一个非常糟糕的动态脚本语言与对接丑陋,往往基于XML的语法。
当你在Python程序,你为什么会想要一个丑陋的,坏的脚本语言,当你有一个美丽的 CodeGo.net,辉煌的脚本语言在您的处置?其实,这是一个更普遍的问题:当您在几乎任何语言进行编程,为什么你想,当你有Jython和IronPython的在您的处置一个丑陋的,坏的脚本语言?
因此,要概括一下:DI / IOC的做法是一样重要的在Python中,因为它是在Java中,对于完全相同的原因。该DI / IOC的但是,是建立在语言和经常如此轻巧的消失。 (这里有一个比喻:在组装,子程序调用是一个相当大的交易-你要保存你的局部变量和寄存器保存返回地址的指令指针更改为你所呼叫的子程序,安排它跳回你的子程序当它完成时,把那里的被叫方可以找到他们,等IOW:在组装,“子程序调用”是一种设计模式,和之前有类似的Fortran语言,其中有建于子程序调用,人们建立自己的自己的“子程序你会说,子程序调用是”在Python中,只是你不'子程序
BTW:对于什么样子采取DI其逻辑的例子来看看吉rad的Bracha的新话编程语言以及他的著作的主题:
构造函数是有害的
注入死刑
禁止对导入(续)
2.
部分原因是模块系统工作在Python的方式。你可以得到一种“单身”free的,只是从一个模块中导入它。定义一个对象的实际实例中的一个模块,然后任何客户端端代码可以导入并真正得到一个工作,全面构建/填充对象。
这是相对于Java的,在那里你不导入对象的实际情况。你总是有自己实例化它们,(排序的IoC / DI样式的方法)。您可以减轻不必自己所拥有的静态(或实际工厂类)实例化一切的trouble,但你仍然招致实际创建新的每项资源开销
3.
使得Django的控制反转的。例如,数据库服务器被选中的配置文件,然后提供相应的数据库封装实例的数据库客户端端。
不同的是,Python有一流的类型。数据类型,包括类,都是自己的对象。如果你想要一个特定的类,只是这个类。例如:
if config_dbms_name == 'postgresql':
import psycopg
self.database_interface = psycopg
elif config_dbms_name == 'mysql':
...
再后来的代码可以通过书面表单创建一个数据库接口:
my_db_connection = self.database_interface()
# Do stuff with database.
取而代之的样板工厂的函数,Java和C ++的需要,Python做它与普通的代码一行或两行。这是函数性命令式编程的力量。
4.
在我看来,这样的事情依赖注入是一个刚性的,当代码过于沉重的主体轻易改变,你会发现自己不得不挑了小部分,定义接口为他们,然后让人们改变行为症状通过该插入这些接口的对象。这一切都很好,但最好避免在首位那种。
这也是一个静态类型语言的症状。当你要表达抽象的唯一工具是继承,那么这就是几乎什么无处不在。话虽如此,C ++是非常类似的,但从来没有拿起迷恋建设者和接口无处不在的Java开发人员做了。这是很容易得到过度旺盛能够以灵活且可扩展的,很少真正的好处写了太多的通用代码的成本的梦想。我认为这是一个文化的东西。
通常情况下,我认为Python的人来选择合适的工具来完成工作,这是一个连贯的和简单的整体,而不是一个真正的工具(一个可能的插件),可以做什么,但提供了可能的配置排列让人眼花缭乱。还是有可互换的零件在必要时,但不需要定义固定接口,由于鸭打字和语言的相对简单的灵活性大表单主义。
5.
避风港'的Python在好几年,但我会说,它更多的是与它是一个动态类型的语言比什么都重要。举个简单的例子,在Java中,如果我想测试写信给标准输出适当地我DI和传递任何的PrintStream捕捉写入的文字并进行验证。当我在Ruby中我的工作,但是,我可以动态替换“看跌期权”的方法在标准输出做验证,留出来的图片。如果我创建一个抽象的唯一原因是测试类,“它(认为文件系统操作或Java中的时钟),那么直接投资/ IoC创建的解决方案。
6.
我回来“约尔格・W米塔格”回答:“DI / IOC的Python是如此轻巧的消失”。
要备份此看一看在Martin Fowler的例子移植从Java到Python:Python的:Design_Patterns:Inversion_of_Control
正如您可以从上面的链接,一个“容器”在Python中看到可以写成8行代码:
class Container:
def __init__(self, system_data):
for component_name, component_class, component_args in system_data:
if type(component_class) == types.ClassType:
args = [self.__dict__[arg] for arg in component_args]
self.__dict__[component_name] = component_class(*args)
else:
self.__dict__[component_name] = component_class
7.
IoC和ruby,这是我的想法,为什么它没有被广泛流传
更新:
我不支持那个网站了,链接不工作,但可以在这里阅读
8.
其实,这是很容易写出足够干净的代码与DI(我不知道,会不会被/ Python的停留,然后,但无论如何:)),例如我其实perefer这样编码:
def polite(name_str):
return "dear " + name_str
def rude(a):
return name_str + ", you, moron"
def greet(name_str, call=polite):
print "Hello, " + call(name_str) + "!"
_
>>greet("Peter")
Hello, dear Peter!
>>greet("Jack", rude)
Hello, Jack, you, moron!
是的,这可以看作是函数/类只是一个简单的表单,但它确实工作。所以,也许Python的默认附带的电池足够在这里了。
P.S.我也贴这种幼稚的做法一个更大的示例在动态评估在Python简单的布尔逻辑。
10. 用python如何爬取网上的钟表图片
需要训练一个钟表的识别模型