搜索
bottom↓
回复: 88
打印 上一主题 下一主题

写程序注释无缝超顺滑切换的python小程序

  [复制链接]

出0入10汤圆

跳转到指定楼层
1
发表于 2017-7-17 18:35:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 10xjzheng 于 2017-7-17 20:43 编辑

声明:很多人想要这个的编译exe,个人不打包是觉得做的还不够好,这个顶多就是一个demo,我
现在在复习,也没空去搞其他的功能,这个就当是了了个人心愿,有大神愿意就站出来把这个做完整
一点吧。或者等我考完试没人搞,我再来搞一个厉害点的版本。

这是我花一天时间做出来的觉得超酷的一个一直都想实现的windows小程序,可能有些人会觉得无感。
但是这是我对于我个人还是心头一直想解决的问题。

直接看配的gif图,注意这个过程中我没有用shift按键切换中英文,左下角是程序运行的时候打印出来
的信息,都是程序在帮我无缝切换,我想注释就注释,想写代码就写代码。不断的进行切换有时真的
超烦,或许你也这样子,有时要打中文出来,发现打出来的是英文,有时想打英文打中文来删掉英文,
扰乱我思路。


我一直都希望输入法能对中文程序员写代码更加友好一点,因为我们用英文写程序,用中文注释,不断
的进行切换有时真的超烦,特别是有时要打中文出来,再删掉打英文,有时打中文出来删掉英文,扰乱
我思路——我还达不到用英文注释的这种水平,写出来词不达意。昨天写程序写到一半,突然心血来潮
就动手花了一天的时间写了这个程序出来,感谢python的那些包的提供者,让我一个基本不懂开发windows
程序这么快就写出来了(我最多就用拉拉控件),这一天里面其实我只有1\5的时间在写代码,其他时间
都在找资料,更加说明了python多么友好。

这个程序原理很简单,就是你打出要注释的字符//的时候,他就会切换到中文状态,如果你换行想写程序
那么他就自动帮你切换到英文状态。我学python学得也一般,现在写出来也只是一个小玩具,给我大家看
看而已,有爱自取,欢迎大神来帮忙改进改进,造福大众。

  1. import pythoncom
  2. import pyHook
  3. from pymouse import *
  4. from pykeyboard import *



  5. def OnKeyboardEvent(event):
  6.     global VirguleCnt, InputType, ProgramPress

  7.     # 如果是用户自己的输入
  8.     if(ProgramPress==0):
  9.         # 英文输入法
  10.         if(InputType == 0):
  11.             # 还没有输入斜杆的状态
  12.             if(VirguleCnt==0):
  13.                 # 是斜杆就先保留起来,不是斜杆不做任何操作
  14.                 if (event.Ascii == ord('/')):
  15.                     # print('已经输入一次斜杆')
  16.                     VirguleCnt += 1
  17.                     return False
  18.                 else:
  19.                     return True

  20.             # 已经有一个斜杆
  21.             else:
  22.                 if (event.Ascii == ord('/')):
  23.                     # print('收到两次斜杆,准备操作......')
  24.                     VirguleCnt = 0
  25.                     # 切换到英文输入法
  26.                     InputType = 0
  27.                     # 按下两次斜杆
  28.                     ProgramPress = 2
  29.                     k.tap_key('/', n=2)
  30.                     # 切换到中文输入法
  31.                     InputType = 1
  32.                     print('切换到中文输入法')
  33.                     k.tap_key(k.shift_key)
  34.                     return False
  35.                 else:
  36.                     VirguleCnt = 0
  37.                     # print('斜杆+非斜杆')
  38.                     ProgramPress = 1
  39.                     k.tap_key('/')
  40.                     return True
  41.         # 中文输入法
  42.         else:
  43.             # 13是换行的ASCLL码
  44.             if (event.Ascii == 13):
  45.                 # print('中文输入法下收到一次回车,准备切换到英文输入法')
  46.                 print('切换到英文输入法')
  47.                 k.tap_key(k.shift_key)
  48.                 VirguleCnt = 0
  49.                 InputType = 0

  50.             return True

  51.     # 如果是电脑程序控制的输入
  52.     else:
  53.         ProgramPress -= 1
  54.         # print('程序按下一次斜杆%d-%d'%(ProgramPress,VirguleCnt))
  55.         return True






  56. if __name__ == "__main__":

  57.     global VirguleCnt,k,InputType,ProgramPress
  58.     VirguleCnt = 0
  59.     InputType = 0
  60.     ProgramPress = 0

  61.     # m = PyMouse()
  62.     k = PyKeyboard()

  63.     # create a hook manager
  64.     hm = pyHook.HookManager()
  65.     # watch for all mouse events
  66.     hm.KeyDown = OnKeyboardEvent
  67.     # set the hook
  68.     hm.HookKeyboard()
  69.     # wait forever
  70.     pythoncom.PumpMessages(1000)


复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

来自 2楼
发表于 2017-7-18 12:50:13 | 只看该作者
如果再有此需求,楼主可以看看autohotkey

出0入0汤圆

来自 3楼
发表于 2017-7-27 20:51:49 | 只看该作者
ayumi8 发表于 2017-7-26 09:14
先按//   注释结束 再按   //      就自动切换到 E文了   然后回车        先这样子用吧 挺好的
...

应了你的要求。“//"后,回车亦可切换。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

4
发表于 2017-7-17 18:39:23 | 只看该作者
判断双斜线,自动切换输入法?

出0入10汤圆

5
 楼主| 发表于 2017-7-17 18:46:38 | 只看该作者
rf_smart 发表于 2017-7-17 18:39
判断双斜线,自动切换输入法?


不是切换输入法,是切换中英文状态。当然也可以切换英文跟中文的输入法。

出0入0汤圆

6
发表于 2017-7-17 18:48:46 | 只看该作者
如何运行?3.4编译?2.6可以用吗

出0入0汤圆

7
发表于 2017-7-17 18:49:12 | 只看该作者
好功能,赞一个!目前输入法这方面做的都不好

出0入0汤圆

8
发表于 2017-7-17 18:51:57 | 只看该作者
这个不懂啊,怎样用?

出0入22汤圆

9
发表于 2017-7-17 18:52:15 来自手机 | 只看该作者
这个用神马方式编译和运行?

出0入25汤圆

10
发表于 2017-7-17 18:59:24 | 只看该作者
问 lz 一个问题,  python的 源程序能不能  编译成  可执行文件发给别人运行的???

比如 我不想给别别人看源代码,    python 目前是不是只能 发给别人源代码,让别人 直接在python 里面 运行????????????

出0入0汤圆

11
发表于 2017-7-17 19:09:22 来自手机 | 只看该作者
这个问题很困扰程序员。。但没人去解决他。

出0入0汤圆

12
发表于 2017-7-17 19:24:26 来自手机 | 只看该作者
本帖最后由 Wangwy 于 2017-7-17 19:25 编辑

判断双斜杠 中英文输入切换,试试看

出0入12汤圆

13
发表于 2017-7-17 19:25:23 | 只看该作者
以前我做过一个脚踏板,踩下去或抬起来,两种输入法转换,相对楼主的方法,绕弯了.

出0入4汤圆

14
发表于 2017-7-17 19:33:45 | 只看该作者
/*
*/
里面能不能切换

出0入10汤圆

15
发表于 2017-7-17 19:51:22 来自手机 | 只看该作者
不错,好东西,尽量加入/*的识别。虽然现在已经尽量英文写注释,但这个狠实用

出0入0汤圆

16
发表于 2017-7-17 19:54:43 | 只看该作者
很实用。顶楼主一下。

出0入0汤圆

17
发表于 2017-7-17 20:02:09 | 只看该作者
有人好心编译下吗

出0入10汤圆

18
 楼主| 发表于 2017-7-17 20:03:51 | 只看该作者
kv2004 发表于 2017-7-17 19:25
以前我做过一个脚踏板,踩下去或抬起来,两种输入法转换,相对楼主的方法,绕弯了. ...

是在下输了,666666

出0入12汤圆

19
发表于 2017-7-17 20:23:23 | 只看该作者
10xjzheng 发表于 2017-7-17 20:03
是在下输了,666666


我是说你的办法简单方便,我绕弯了

出0入10汤圆

20
 楼主| 发表于 2017-7-17 20:35:28 | 只看该作者
kv2004 发表于 2017-7-17 20:23
我是说你的办法简单方便,我绕弯了

我说大哥能做到这样子我也是幅,我如果想到这个我恐怕不会去做。

出0入0汤圆

21
发表于 2017-7-17 20:53:20 | 只看该作者
kv2004 发表于 2017-7-17 20:23
我是说你的办法简单方便,我绕弯了

大哥你的方法真6,我之前做过类似的脚踏板 自己烧写芯片那种

出0入0汤圆

22
发表于 2017-7-17 21:19:54 | 只看该作者
实用,建议做成小图标隐藏在状态栏

出0入0汤圆

23
发表于 2017-7-17 21:32:37 来自手机 | 只看该作者
我一直用英文写注释,因为mdk的中文注释经常变乱码

出0入0汤圆

24
发表于 2017-7-17 21:38:08 | 只看该作者
rei1984 发表于 2017-7-17 18:59
问 lz 一个问题,  python的 源程序能不能  编译成  可执行文件发给别人运行的???

比如 我不想给别别人 ...

当然可以打包成exe拉,这样你就不必把源代码泄漏,也不必使用者一定安装python的。
你心中希望的都是可以实现的,我可以很确定的告诉你。

出0入0汤圆

25
发表于 2017-7-17 21:39:53 | 只看该作者
楼主,我觉得今天你的帖子最亮!!不能赞美更多了!

出0入0汤圆

26
发表于 2017-7-17 21:45:57 | 只看该作者
leicai05 发表于 2017-7-17 21:38
当然可以打包成exe拉,这样你就不必把源代码泄漏,也不必使用者一定安装python的。
你心中希望的都是可以 ...

pyton写的程序是不是需要什么平台之类的东西?

其次,程序可以稍大些,但它能不能象c++编译成的exe程序一样,只要一个单exe就考来考去使用,不必象QT,c#一样带个库……


出0入0汤圆

27
发表于 2017-7-17 22:27:22 来自手机 | 只看该作者
恰好最近也在学python,想玩爬虫

出0入0汤圆

28
发表于 2017-7-17 22:27:45 | 只看该作者
英文注释

出0入0汤圆

29
发表于 2017-7-17 22:34:19 | 只看该作者
这个很好

出0入50汤圆

30
发表于 2017-7-17 22:35:09 来自手机 | 只看该作者
明天我打包试试

出0入0汤圆

31
发表于 2017-7-17 22:36:29 | 只看该作者
kv2004 发表于 2017-7-17 19:25
以前我做过一个脚踏板,踩下去或抬起来,两种输入法转换,相对楼主的方法,绕弯了. ...

这样也行啊

出0入0汤圆

32
发表于 2017-7-17 22:38:11 | 只看该作者
kinsno 发表于 2017-7-17 21:45
pyton写的程序是不是需要什么平台之类的东西?

其次,程序可以稍大些,但它能不能象c++编译成的exe程序 ...

python不需要什么平台,最多有些第三方库需要平台支持。
至于打包成exe,应该不是像c++这样,让你失望了。
python打包exe应该体积比较大,支持的库和包应该都要包括进去。
跟c++的exe生成原理就不一样。

出0入42汤圆

33
发表于 2017-7-18 00:04:04 来自手机 | 只看该作者
这个可以用notepad++上吗

出0入0汤圆

34
发表于 2017-7-18 00:28:01 | 只看该作者
赞一个,这个功能太实用了

出0入0汤圆

35
发表于 2017-7-18 03:23:49 来自手机 | 只看该作者
很好的想法

出0入0汤圆

36
发表于 2017-7-18 07:28:44 来自手机 | 只看该作者
kinsno 发表于 2017-7-17 21:45
pyton写的程序是不是需要什么平台之类的东西?

其次,程序可以稍大些,但它能不能象c++编译成的exe程序 ...

现在msvc编译c++也要一堆库的

出0入0汤圆

37
发表于 2017-7-18 08:12:21 | 只看该作者
可以打包,用py2exe,cx_freeze,pyinstaller

出0入8汤圆

38
发表于 2017-7-18 08:38:39 | 只看该作者
不错的思路,给楼主赞一个。

对于中英文注释的选择,多年一路过来,我的历程是:中文 -> 英文 -> 中文。
人老了,就越追求简单:
与其用半吊子英文来注释,不如用中文注释把问题说清楚,你既写得 666,别人也能看得 666。

出0入0汤圆

39
发表于 2017-7-18 08:45:37 | 只看该作者
kv2004 发表于 2017-7-17 19:25
以前我做过一个脚踏板,踩下去或抬起来,两种输入法转换,相对楼主的方法,绕弯了. ...

这个牛,真正叫程序员老司机开车。

出0入0汤圆

40
发表于 2017-7-18 08:48:19 | 只看该作者
rei1984 发表于 2017-7-17 18:59
问 lz 一个问题,  python的 源程序能不能  编译成  可执行文件发给别人运行的???

比如 我不想给别别人 ...

肯定可以打包,不过打包肯定也会很大。  这些都是解释性语言,要跑一个“虚拟机”,打包就必须把虚拟机打包进去,X86运行的是你打包进去的虚拟机软件,虚拟机载入你的解释语句执行。

出0入0汤圆

41
发表于 2017-7-18 09:05:45 | 只看该作者
赞一下 LZ 精神可嘉!

感觉自己都被老外同化了,全是字母数字了

建议:研究下如何将此思路做成各个编辑器(如Source Insight eclipse notepad++等)的插件,效果才好才实用。

出0入4汤圆

42
发表于 2017-7-18 09:25:38 | 只看该作者
用全英文才是正道,文件编辑器的覆盖模式对中文支持多不好,

出0入0汤圆

43
发表于 2017-7-18 10:34:30 | 只看该作者
很有意思的小软件哈

出0入0汤圆

44
发表于 2017-7-18 10:44:56 | 只看该作者
本帖最后由 adda 于 2017-7-18 10:46 编辑

可以做个更强大的工具:
行首非空符号为 / ; rem 等则切换为中文输入法

出0入0汤圆

45
发表于 2017-7-18 12:33:28 来自手机 | 只看该作者
键盘钩子?

出4375入62汤圆

46
发表于 2017-7-18 12:45:19 | 只看该作者
中文注释的好处,在同时存在很多官方源码的时候

看到一个中文注释,就知道这是特别修改的地方,而不是官方自带的

出0入0汤圆

47
发表于 2017-7-18 13:05:48 | 只看该作者
kv2004 发表于 2017-7-17 19:25
以前我做过一个脚踏板,踩下去或抬起来,两种输入法转换,相对楼主的方法,绕弯了. ...

你这个方法我是服了

出0入4汤圆

48
发表于 2017-7-18 13:27:22 | 只看该作者
不错,脚踏板那个很6,呵呵

出0入0汤圆

49
发表于 2017-7-18 13:37:05 | 只看该作者
python34版本的pyHook 怎么安装的? 我只找到了2.7版本的包

出0入10汤圆

50
 楼主| 发表于 2017-7-18 18:54:42 | 只看该作者
mq-life 发表于 2017-7-18 12:50
如果再有此需求,楼主可以看看autohotkey

还有这操作?

出0入10汤圆

51
 楼主| 发表于 2017-7-18 18:59:44 | 只看该作者
leicai05 发表于 2017-7-18 13:37
python34版本的pyHook 怎么安装的? 我只找到了2.7版本的包

http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook
不用谢。安装还是老套路啊,就是要安装对。

出0入0汤圆

52
发表于 2017-7-18 19:28:27 | 只看该作者
这个赞!!!!!!

出0入0汤圆

53
发表于 2017-7-18 21:14:41 | 只看该作者
10xjzheng 发表于 2017-7-18 18:59
http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyhook
不用谢。安装还是老套路啊,就是要安装对。 ...

谢谢,我也找到这个下载的
我import pythoncom不行是因为pywin32的相关的dll路径没有添加到环境变量中。

现在已经ok了。

出0入0汤圆

54
发表于 2017-7-18 23:25:48 | 只看该作者
rei1984 发表于 2017-7-17 18:59
问 lz 一个问题,  python的 源程序能不能  编译成  可执行文件发给别人运行的???

比如 我不想给别别人 ...

有一个py2exe软件可以把python脚本生成exe文件。

出0入0汤圆

55
发表于 2017-7-19 08:28:21 来自手机 | 只看该作者
厉害了我的哥,学习学习

出20入0汤圆

56
发表于 2017-7-19 09:20:37 | 只看该作者
  这个可以用autohotkey实现,更快捷。

出0入0汤圆

57
发表于 2017-7-19 15:46:58 | 只看该作者
本帖最后由 amenty 于 2017-7-19 16:35 编辑
talkingbeast 发表于 2017-7-19 09:20
这个可以用autohotkey实现,更快捷。


mark            怎么总想起来warkey和按键精灵呢

出0入0汤圆

58
发表于 2017-7-22 20:21:29 | 只看该作者
楼主好工具!!!

以前因为懒 用英文凑合写注释

出0入0汤圆

59
发表于 2017-7-23 14:26:20 | 只看该作者



用全局键盘勾子的原理写的楼主程序,控制台窗口显示击键代码,本人未在程序中加后门,如果介意按键内容被记录的朋友,请勿运行程序
aardio工程,原代码:
import console;
import win;
import thread;
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio Form";right=461;bottom=142;border="dialog frame";mode="popup";parent=...)
winform.add(
edit={cls="edit";text="edit";left=14;top=16;right=435;bottom=128;edge=1;multiline=1;z=1}
)
/*}}*/

import console;
import key.hook;
var hook = key.hook();
var cnt = 0;
var flg = false;

//录制回调函数
hook.proc = function(msg,vkcode,scancode,injected,flags,timeStamp,extraInfo){
if( injected ) return; //模拟鼠标不处理
    var kn = key.getName( vkcode );
    select(msg) {
     case 0x100/*_WM_KEYDOWN*/ ,0x104/*_WM_SYSKEYDOWN*/ {
         console.log("按下","键名:" + kn,"键码:"+vkcode)
         if(kn=="/"){
                 cnt++;                
         }
         else {
                 cnt=0;
         }
         if(cnt==2){     
             key.pressEx("CTRL","space")        
            cnt = 0         
            
         }   
     }
  
    }  
   
}

winform.show();
win.loopMessage();

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

60
发表于 2017-7-24 10:34:41 | 只看该作者
装了python2.7-win32

运行的时候出现错误:
Traceback (most recent call last):
  File "win-input-switch.py", line 5, in <module>
    from pykeyboard import *
  File "C:\Python27\lib\pykeyboard\__init__.py", line 24, in <module>
ImportError: cannot import name PyKeyboard

有谁知道解决方法吗?

出0入0汤圆

61
发表于 2017-7-24 10:39:56 | 只看该作者
njlzzdh 发表于 2017-7-23 14:26
用全局键盘勾子的原理写的楼主程序,控制台窗口显示击键代码,本人未在程序中加后门,如果介意按键内容 ...

good,终于有人做了EXE出来了

出0入0汤圆

62
发表于 2017-7-24 13:09:46 | 只看该作者
rei1984 发表于 2017-7-17 18:59
问 lz 一个问题,  python的 源程序能不能  编译成  可执行文件发给别人运行的???

比如 我不想给别别人 ...

有的,py2exe就可以

出0入0汤圆

63
发表于 2017-7-24 15:07:42 | 只看该作者
njlzzdh 发表于 2017-7-23 14:26
用全局键盘勾子的原理写的楼主程序,控制台窗口显示击键代码,本人未在程序中加后门,如果介意按键内容 ...

有问题,写完注释回车,下面开始写程序,但是依然是中文状态

出0入0汤圆

64
发表于 2017-7-24 16:45:46 | 只看该作者
这个很有用啊,每次写程序遇到这种切换的问题都特别烦,都不想写注释了,但又不得不写

出0入0汤圆

65
发表于 2017-7-24 16:54:58 | 只看该作者
不好用,WIN10下居然没反应,换到WIN7,输入一个斜杠就变成顿号

出0入0汤圆

66
发表于 2017-7-24 17:06:56 | 只看该作者
kv2004 发表于 2017-7-17 19:25
以前我做过一个脚踏板,踩下去或抬起来,两种输入法转换,相对楼主的方法,绕弯了. ...

你这个牛叉,编程序跟开车似的

出0入0汤圆

67
发表于 2017-7-24 17:18:11 | 只看该作者
njlzzdh 发表于 2017-7-23 14:26
用全局键盘勾子的原理写的楼主程序,控制台窗口显示击键代码,本人未在程序中加后门,如果介意按键内容 ...

360报木马,添加信任了,也没效果

出0入4汤圆

68
发表于 2017-7-24 17:39:12 | 只看该作者
penny2799 发表于 2017-7-24 16:54
不好用,WIN10下居然没反应,换到WIN7,输入一个斜杠就变成顿号

第二个反斜杆变成“、”号。

出0入12汤圆

69
发表于 2017-7-25 08:42:22 | 只看该作者
原来切换方法是模拟按shift键( k.tap_key(k.shift_key) )
PYTHON能不能真正切换输入法? ----不用模拟shift/ctrl.....
?

出0入0汤圆

70
发表于 2017-7-25 15:46:06 | 只看该作者
njlzzdh 发表于 2017-7-23 14:26
用全局键盘勾子的原理写的楼主程序,控制台窗口显示击键代码,本人未在程序中加后门,如果介意按键内容 ...

谢谢  可是 我用的时候  ...是另一番景象  要打注释的试试      第一个斜杠对的    然后第二个就变顿号了 (第一个斜杠完了就切换到中文输入法了,我用的是搜狗拼音)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

71
发表于 2017-7-25 16:29:31 | 只看该作者
我这也是这个原因

出30入54汤圆

72
发表于 2017-7-25 16:41:09 | 只看该作者
创意不错,不过基本上要和主流对接的话基本上不会去用中文,会出各种各样的问题,用git提交对比代码也比较麻烦

出0入0汤圆

73
发表于 2017-7-25 18:48:41 | 只看该作者
ayumi8 发表于 2017-7-25 15:46
谢谢  可是 我用的时候  ...是另一番景象  要打注释的试试      第一个斜杠对的    然后第二个就变顿号了 ...

那是输入法本身default的原因,跟我的程序无关。你可以试试系统自带的“微软拼音"。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

74
发表于 2017-7-25 18:51:45 | 只看该作者
zhousun 发表于 2017-7-24 15:07
有问题,写完注释回车,下面开始写程序,但是依然是中文状态

我的程序里输入法切换的唯一条件是连续出现2次“/“,与回车键无关。
if(kn=="/"){
                 cnt++;                 
         }
         else {
                 cnt=0;
         }
         if(cnt==2){     
             key.pressEx("CTRL","space")         
            cnt = 0                     
         }   

出0入0汤圆

75
发表于 2017-7-25 18:52:47 | 只看该作者
flyfox8 发表于 2017-7-24 17:39
第二个反斜杆变成“、”号。

答案在73楼

出0入0汤圆

76
发表于 2017-7-25 19:00:53 | 只看该作者
penny2799 发表于 2017-7-24 16:54
不好用,WIN10下居然没反应,换到WIN7,输入一个斜杠就变成顿号

答案在73楼

出0入0汤圆

77
发表于 2017-7-25 19:46:25 | 只看该作者

确实是输入法设置问题,谢谢指教;能不能再优化一下,只要注释一回车,就自动切换成英文呢?

出0入0汤圆

78
发表于 2017-7-26 08:56:07 | 只看该作者
njlzzdh 发表于 2017-7-25 18:48
那是输入法本身default的原因,跟我的程序无关。你可以试试系统自带的“微软拼音"。
...

非常感谢  我这个输入法 也可以这样子设置  现在可以了      就是中文输出入的时候  回车换行之后  能自动切到E文 就完美了   谢谢

出0入0汤圆

79
发表于 2017-7-26 09:14:41 | 只看该作者
zhousun 发表于 2017-7-25 19:46
确实是输入法设置问题,谢谢指教;能不能再优化一下,只要注释一回车,就自动切换成英文呢? ...

先按//   注释结束 再按   //      就自动切换到 E文了   然后回车        先这样子用吧 挺好的

出0入85汤圆

80
发表于 2017-7-26 14:01:37 | 只看该作者
这主意不错

出0入0汤圆

81
发表于 2017-7-28 09:29:33 | 只看该作者
njlzzdh 发表于 2017-7-27 20:51
应了你的要求。“//"后,回车亦可切换。

    非常感谢  大神V5

出0入30汤圆

82
发表于 2018-5-3 17:13:09 | 只看该作者
借花献佛,启动后最小化到托盘,无console输出,无后门,//后回车可切换,未严格测试,娱乐之用,以下为全部代码
  1. import win.ui;
  2. /*DSG{{*/
  3. mainForm = win.form(text="输入法自动切换";right=400;bottom=100;max=false)
  4. mainForm.add(
  5. static={cls="static";text="Enjoy it!^_^";left=96;top=32;right=320;bottom=64;align="center";color=32768;font=LOGFONT(name='微软雅黑';h=-21);transparent=1;z=1}
  6. )
  7. /*}}*/

  8. import console;
  9. import key.hook;
  10. var hook = key.hook();
  11. var cnt = 0;
  12. var flg = false;

  13. var zhflg=0;
  14. //录制回调函数
  15. hook.proc = function(msg,vkcode,scancode,injected,flags,timeStamp,extraInfo){
  16. if( injected ) return; //模拟鼠标不处理
  17.     var kn = key.getName( vkcode );
  18.     select(msg) {
  19.      case 0x100/*_WM_KEYDOWN*/ ,0x104/*_WM_SYSKEYDOWN*/ {
  20.          //console.log("按下","键名:" + kn,"键码:"+vkcode)
  21.          if(kn=="/")
  22.          {
  23.               cnt++;                 
  24.          }
  25.          else
  26.          {                                    
  27.               cnt=0;            
  28.          }
  29.          if(cnt==2)
  30.          {     
  31.              key.pressEx("CTRL","space");         
  32.              zhflg=1;
  33.          }   
  34.          if((kn=="ENTER")&&(zhflg==1))
  35.          {
  36.              key.pressEx("CTRL","space");
  37.              zhflg=0;   
  38.          }   
  39.      }
  40.   
  41.     }  
  42.    
  43. }

  44. import win.util.tray;
  45. var appico=string.load("res\app.ico");
  46. var tray = win.util.tray(mainForm,appico) //创建托盘图标,如果不能显示图标,可能是图标问题,要复合图标
  47. tray.message = 0x400+9981/*_WM_TRAYMESSAGE*/
  48. tray.pop("欢迎使用","^_^")
  49. tray.tip = "点我点我" //设置鼠标提示  

  50. mainForm.onClose = function(hwnd,message,wParam,lParam){
  51.     tray.delete(); //关闭窗口同时删掉托盘,避免关闭窗口后要鼠标移到托盘图标才消失
  52. }
  53. import mouse;
  54. mainForm.wndproc = function(hwnd,message,wparam,lparam){
  55.     select(message) {//判断消息类型
  56.     case  0x10/*_WM_CLOSE*/{
  57.             fadeHide();
  58.         };
  59.         case( 0x400+9981/*_WM_TRAYMESSAGE*/ ) { //托盘图标消息
  60.               
  61.              if(lparam = 0x203/*_WM_LBUTTONDBLCLK)*/){  //鼠标双击
  62.                 mainForm.show(true);
  63.             }
  64.             elseif(lparam =0x205/*_WM_RBUTTONUP*/){ //鼠标右键
  65.                     x,y = mouse.getPos();
  66.                             win.setForeground(mainForm.hwnd)
  67.                             mainForm.popmenu.popup(x,y,true)
  68.             }  

  69.         }
  70.         case( 0x112/*_WM_SYSCOMMAND*/ ){ //系统命令消息
  71.             if( wparam == 0xF020/*_SC_MINIMIZE*/ ){ //用户点击了最小化按钮
  72.                 mainForm.show(false); //隐藏窗口
  73.                 return true;//阻击默认消息传递,取消最小化过程
  74.               }
  75.         }
  76.         

  77.      }
  78.         
  79. }

  80. fadeHide = function(){
  81.     for(i=17;1;-1){
  82.         mainForm.transparent( i * 15);
  83.         x,y,cx,cy = mainForm.getPos();
  84.         mainForm.setPos(x-1,y-1,cx+2,cy+2);
  85.         win.delay(5);
  86.     };  
  87.     win.quitMessage();
  88. }

  89. //下面是添加托盘右键菜单
  90. import win.ui.menu;
  91. mainForm.popmenu=win.ui.popmenu(mainForm);
  92. mainForm.popmenu.add('打开',function(id){ //添加了一个打开主界面的菜单
  93.     mainForm.show();
  94. })
  95. mainForm.popmenu.add('退出',function(id){ //添加了一个退出程序的菜单
  96.    mainForm.close();
  97. })

  98. mainForm.enableDpiScaling();
  99. mainForm.show(false);

  100. return win.loopMessage();
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

83
发表于 2018-5-3 17:53:23 | 只看该作者
如果英语好,代码文件最好还是全英文。

出10入10汤圆

84
发表于 2018-5-3 21:19:34 | 只看该作者
楼主gif图中用的是哪个代码编辑器?

出0入10汤圆

85
 楼主| 发表于 2018-5-5 19:52:34 | 只看该作者
szxszx 发表于 2018-5-3 21:19
楼主gif图中用的是哪个代码编辑器?

pycharm                    

出0入0汤圆

86
发表于 2019-10-29 17:50:39 | 只看该作者
我用pynput也写了一个玩玩,附件为源文件。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

87
发表于 2019-10-29 19:44:56 来自手机 | 只看该作者
kv2004 发表于 2017-7-17 19:25
以前我做过一个脚踏板,踩下去或抬起来,两种输入法转换,相对楼主的方法,绕弯了. ...

摩托换挡了

出0入0汤圆

88
发表于 2019-12-16 12:31:03 | 只看该作者
支持楼主  感谢分享  请问 pycharm 里面如何实现这种无缝切换呢?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 22:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表