话说Pywinauto真是好用阿,不过有些脚本想给同事用他们要安装Python就有点麻烦了,用Py2exe编译出的程序运行时总提示有错误。今天花了点时间,原来Py2exe的脚本里有很多选项可以用。先写这一点吧。
from distutils.core import setup
import py2exe
setup(console=['setup_vista32.py'],
options={
"py2exe":{
"packages":["pywinauto",
"pywinauto.findwindows",
"pywinauto.controls",
"pywinauto.tests"]
}
}
以后再慢慢优化把垃圾去出去。
PS:破Wordpress把我的缩进破坏了.
Also posted in QA, 技术, 测试 | Tagged py2exe, python, pywinauto, 技巧 |
老了,脑子不行了。昨天才知道怎么用Pywinauto控制一个正在运行的进程。
app = Application()
app.connect_(title = "程序名")
然后可用print_control_identifiers()列出所有控件的名字。
app.Information.print_control_identifiers()
像我这里想点击一个窗口里的OK按钮,它给我列的名字是”Button”(????),我就这么点击它。
app.Information.Button.Click()
文中的技术出处Python GStreamer Tutorial。
最简单的播放视频方法:
gst-launch-0.10 playbin uri=file:///path/to/视频文件
在Python里播放
self.player = gst.element_factory_make("playbin", "player")
bus = self.player.get_bus()
bus.add_signal_watch()
bus.enable_sync_message_emission()
bus.connect('message', self.on_message)
bus.connect('sync-message::element', self.on_sync_message)
self.player.set_property('uri', "file://" + filepath)
self.player.set_state(gst.STATE_PLAYING)def on_message(self, bus, message):
t = message.type
if t == gst.MESSAGE_EOS:
self.player.set_state(gst.STATE_NULL)
self.button.set_label("Start")
else if t == gst.MESSAGE_ERROR:
self.player.set_state(gst.STATE_NULL)
self.button.set_label("Start")def on_sync_message(self, bus, message):
if message.structure is None:
return
message_name = message.structure.get_name()
if message_name == 'prepare-xwindow-id':
imagesink = message.src
imagesink.set_property('force-aspect-ratio', True)
imagesink.set_xwindow_id(self.movie_window.window.xid)
本想翻译一下那篇教程,但是发现文字其实很少,大家应该是没问题的。而且WP的代码缩进都给我去了,不大适合贴代码。我的播放器其实视频部分用playbin就可以了,可能会加上拖放,加字幕,在影片上显示状态等等功能吧,那些都和视频音频混合无关了。然后就是加上自动下载BT文件和影片介绍,还有在douban改喜好的部分了。唉,我的效率好低。可是原来想的P2P电视离PPstream越来越远,离Miro越来越近了倒是。
Also posted in Kuihua | Tagged Kuihua, Programming |
想用Python做个视频播放器自己用呢,让Gstreamer这东西给困住了。网上文档大部分是讲播放音频的,弄得都特复杂。搞的我放一个AVI文件好像还得先查它是什么编码编的。差点就转向xine了,然后又差点把python放弃转向java…-_-!
不过就在刚才终于成功了,而且Audio/Video Sync的也很好。赶快记下来,以免明天忘了。
gst-launch-0.10 -v filesrc location=视频文件 ! decodebin name=d d. ! queue! autovideosink d. ! queue ! audioconvert ! alsasink
Also posted in Linux | Tagged gstreamer, Programming, python |