本文目录一览:
- 1、请教关于用python编写屏幕取词的程序问题
- 2、怎么用python实现电脑cpu温度监控,最好有代码,windows平台,求大神
- 3、python编程,我方和敌,开始时血量(HP)都是300,轮流攻击,造成伤害1-100之间的随机数,一方HP空结束?
请教关于用python编写屏幕取词的程序问题
1、屏幕取词技术实现原理与关键源码----
Ubuntu 下可以监视 gtk.Clipboard 来获取当前选中文字和位置。
我以前尝试过定时抓取鼠标附近图像做 OCR 来取词,
改成快捷键取词会省一点。
直接获得文字的悬停取词比较麻烦。
网页、XUL 应用程序可以有鼠标悬停事件。
X11 自己没有, 不过以前流行中文平台、中文外挂时候 TurboLinux 的中文 X-window 被修改为集成鼠标悬停取词翻译。
Gtk 程序也许你可以在 ATK 层入手,自己改 ATK 和用 LD_LIBRARY_PATH。
windows下很不好做。
普遍用的是HOOK API的方法。
可以参考stardict的取词模块。
不过我感觉stardict的取词模块也不是太好用(没金山词霸的好用),感觉有bug。
似乎以前某版本的金山词霸可以翻译图片中的文字,就是用 OCR
再,金山似乎出过 Linux Qt3 版本,找 Zoomq 几位在金山的老大索取源码看看吧
嗯, 金山词霸确实出过 Linux 版本,
是基于 wine 的,不是原生的 Linux 版本...
linux下就不知道,windows下,应该是做一个api hook,钩住TextOut,DrawText和DrawTextEx。
要取词的时候给鼠标所在的窗口发一个WM_PAINT消息,让窗口重绘。
当窗口调用TextOut, DrawText或是DrawTextEx进行重绘的时候,你就可以根据传入的参数知道
窗口想在鼠标下画什么东西了。
怎么用python实现电脑cpu温度监控,最好有代码,windows平台,求大神
from __future__ import division
import os
from collections import namedtuple
_nt_cpu_temp = namedtuple('cputemp', 'name temp max critical')
def get_cpu_temp(fahrenheit=False):
"""Return temperatures expressed in Celsius for each physical CPU
installed on the system as a list of namedtuples as in:
get_cpu_temp()
[cputemp(name='atk0110', temp=32.0, max=60.0, critical=95.0)]
"""
#
cat = lambda file: open(file, 'r').read().strip()
base = '/sys/class/hwmon/'
ls = sorted(os.listdir(base))
assert ls, "%r is empty" % base
ret = []
for hwmon in ls:
hwmon = os.path.join(base, hwmon)
label = cat(os.path.join(hwmon, 'temp1_label'))
assert 'cpu temp' in label.lower(), label
name = cat(os.path.join(hwmon, 'name'))
temp = int(cat(os.path.join(hwmon, 'temp1_input'))) / 1000
max_ = int(cat(os.path.join(hwmon, 'temp1_max'))) / 1000
crit = int(cat(os.path.join(hwmon, 'temp1_crit'))) / 1000
digits = (temp, max_, crit)
if fahrenheit:
digits = [(x * 1.8) + 32 for x in digits]
ret.append(_nt_cpu_temp(name, *digits))
return ret
python编程,我方和敌,开始时血量(HP)都是300,轮流攻击,造成伤害1-100之间的随机数,一方HP空结束?
代码如下(缩进请参考截图):
from random import randint
me_hp = 300
enemy_hp = 300
while True:
m_hurt = randint(1, 100)
if enemy_hp - m_hurt 0:
enemy_hp -= m_hurt
print('造成 {:3} 点伤害,敌方HP为: {:3}'.format(m_hurt, enemy_hp))
else:
print('造成 {:3} 点伤害,Victory!'.format(m_hurt))
break
e_hurt = randint(1, 100)
if me_hp - e_hurt 0:
me_hp -= e_hurt
print('受到 {:3} 点伤害,当前HP为: {:3}'.format(e_hurt, me_hp))
else:
print('受到 {:3} 点伤害,Defeated!'.format(e_hurt))
break
输出如下: