autohotkey键位查阅
AHK按键参考表(仅用于查阅)
中文手册

tkinter官网
较好的中文教案

我其中的一个ahk文件:

Delete::AppsKey
Insert:: Ctrl
b::[
a::t
n::r
h::j
x::w
o::e
j::p
d::o
m::n
;偏心

使用Ahk2exe将ahk 文件编译成exe文件,可在autohotkey官网下载

代码如下

import os, time, threading
import psutil, tkinter, subprocess
import tkinter.messagebox
from tkinter import ttkfrom typing import Optional
from ctypes import  windll, create_unicode_bufferdef getForegroundWindowTitle() -> Optional[str]:hWnd = windll.user32.GetForegroundWindow()length = windll.user32.GetWindowTextLengthW(hWnd)buf = create_unicode_buffer(length + 1)windll.user32.GetWindowTextW(hWnd, buf, length + 1)return buf.value if buf.value else Noneclass Keylisten:def __init__(self):with open('./radardict.txt', 'r',encoding='utf-8') as fp:content = eval(fp.read())self.radar_type = contentself.radars = [r for r in self.radar_type.keys()]self.ahks = [r for r in self.radar_type.values()]self.chosed = None  # 选中的xxpassdef radar_choosed(self, event):widget = event.widget  # 当前的组件value = widget.get()self.chosed = value# 获取窗口def wingui(self):flag = Falsetitle = getForegroundWindowTitle()if '模拟xxx方位距离录取席' == title:flag = Truereturn flag# 启动ahkdef start_ahk(self):self.pid = os.getpid()self.kill_all_process()if self.chosed in self.radars:self.radarkey = self.radar_type.get(self.chosed)while 1:flag = self.wingui()if flag:time.sleep(1)os.popen("start {}".format(os.getcwd() + '\\chk\\' + self.radarkey))breaktime.sleep(1)print("over!")else:passdef start_Main(self):subprocess.Popen('.//MainManipulator.exe', shell=False)# 杀掉所有与ahk有关的进程def kill_all_process(self):pids = psutil.process_iter()for pid in pids:try:if pid.name() in self.ahks:process = psutil.Process(pid.pid)process.kill()except Exception as e:print(e)# 杀掉当前的ahk进程def kill_current_proccess(self):try:pids = psutil.process_iter()radarexe = self.radar_type.get(self.chosed)for pid in pids:try:if pid.name() == radarexe:process = psutil.Process(pid.pid)process.kill()breakexcept Exception as e:print(e)process = psutil.Process(self.pid)process.kill()print(radarexe)except Exception as e:print(e)self.root.destroy()# tkinter窗口设置def tkinter_window(self):def xd_db():subprocess.Popen('./专业训练通用想定制作.exe', shell=False)def click_db():if self.chosed:threadfunc1 = threading.Thread(target=self.start_ahk, args=[])threadfunc1.start()subprocess.Popen('.//MainManipulator.exe', shell=False)# threadfunc2 = threading.Thread(target= self.start_Main, args=[])# threadfunc2.start()else:tkinter.messagebox.showerror(title='错误通告', message='请选择型号!')self.root = tkinter.Tk()self.root.protocol('WM_DELETE_WINDOW', self.kill_current_proccess)  # 关掉窗口的同时杀掉ahk有关进程self.root.title("练习9  v2.0")screenwidth = self.root.winfo_screenwidth()  # 屏幕宽度screenheight = self.root.winfo_screenheight()  # 屏幕高度x = int((screenwidth - 360) / 2)y = int((screenheight - 290) / 2)self.root.geometry("360x240+{0}+{1}".format(x, y))self.root.iconbitmap(".//icon.ico")# 背景C = tkinter.Canvas(self.root, bg="blue", height=290, width=360)filename = tkinter.PhotoImage(file="bg.gif", height=290, width=360)background_label = tkinter.Label(self.root, image=filename)background_label.place(x=0, y=0, relwidth=1, relheight=1)C.pack()font = ("HeiTi", 18, 'bold')# 下拉框设置value = tkinter.StringVar()value.set('请选择型号')combobox = ttk.Combobox(master=self.root,  # 父容器height=20,  # 高度,下拉显示的条目数量width=20,  # 宽度state='readonly',  # 设置状态 normal(可选可输入)、readonly(只可选)、 disabledcursor='arrow',  # 鼠标移动时样式 arrow, circle, cross, plus...font=('', 16),  # 字体justify="center",  # 对齐方式textvariable=value,  # 通过StringVar设置可改变的值values=self.radars,  # 设置下拉框的选项)combobox.bind('<<ComboboxSelected>>', self.radar_choosed)combobox.place(x=62, y=115, anchor='w')# buttun设置btn_xd = tkinter.Button(self.root, text='想定制作', command=xd_db, font=font, width=18, height=1, bg='#fc5531',fg='#fff', borderwidth=0, )btn_xd.place(x=60, y=60, anchor='w')btn_xl = tkinter.Button(self.root, text='开始训练', command=click_db, font=font, width=18, height=1, bg='#e4f4fb',fg='#037dfb', borderwidth=0, )btn_xl.place(x=60, y=170, anchor='w')self.root.mainloop()k = Keylisten()
k.tkinter_window()
# pyinstaller -F -w -i .\logo.ico xz32.py

最后用pyinstaller打包

pyinstaller -F -w -i .\logo.ico xz.py

python tkinter+ autohotkey更改键盘键位映射相关推荐

  1. 解决Thinkpad机型日文键盘键位映射错误的问题

    解决thinkpad机型日文键盘键位映射的错误问题 解决thinkpad机型日文键盘键位映射的错误问题解决thinkpad机型日文键盘键位映射的错误问题http://www.360doc.com/co ...

  2. arch Linux下将esc和cap locks调换位置[更改键盘键位-CW向]

    1.安装xorg sudo pacman -S xorg xorg提供了修改硬件屏幕亮度,键盘键位-的很多文件. 2.查看当前键盘映射的命令 xmodmap 以下是我的输出 xmodmap: up t ...

  3. python tkinter button_更改Python中Tkinter Button的命令方法

    虽然Eli Courtwright的程序运行良好¹,但你真正想要的只是一种在实例化后重新配置任何属性的方法,你可以在实例化时设置它.你是如何通过configure()方法实现的.from Tkinte ...

  4. java按键修改_修改键位映射,打造自己的个性键盘 [转自赵翔鹏的Blog]

    摘要: 修改注册表,定义键位映射,不仅可以交换某几个键位的位置,还可以增强键盘的功能,比如把右alt键.右win键等设置为调整音量大小等. 实在受不了在latex中反复的按\键,右手的负担太重了,所以 ...

  5. 一文掌握Python+tkinter键盘事件与鼠标事件处理

    <Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 用书教师可以联系出版社或董老师获取教学大纲.课件.源码.教案.考试系统等配套教学资源. ...

  6. Python+tkinter实现超时无键盘操作自动退出

    功能描述: Python+tkinter应用程序,启用软件之后,如果用户超过10分钟没有在指定组件中进行按键操作,给出提示信息之后退出程序. 参考代码: 运行结果:

  7. Python3生成脚本实现重置键盘键位

    个人博客点这里 #!/usr/bin/env python # -*- coding:utf-8 -*- # Created by 秋叶夏风# 本模块的功能:<重置键盘键位>import ...

  8. python tkinter库函数详解_Python使用tkinter库进行GUI编程中常用事件处理方式汇总

    在Python GUI编程中,控件响应事件处理是常用的操作.tkinter库中事件类型有哪些?事件绑定方式有几种?如何编写事件处理函数?这些都是必须要面对的问题.今天,我们对上述内容进行简要汇总. 事 ...

  9. 新版 playCover 键位映射教程(mac 玩 ios 原神键位映射示例)

    新版 playCover 键位映射教程(mac 玩 ios 原神键位映射示例) 首先我们先安装好 playCover 与原神,并成功打开游戏,还没有运行成功的可点击 这里 ⇲ 查看游戏安装教程 好的, ...

最新文章

  1. R语言rpartb包树回归模型构建:基于前列腺prostate数据集
  2. hdu2155 小黑的镇魂曲(dp)
  3. nacos 配置动态刷新_Nacos 动态刷新@RefreshScope 【实现配置和实例刷新】
  4. 在服务器上打包部署springboot+vue的项目(一)启动tomcat后打开浏览器点击登录无反应 页面空白问题
  5. 2020年第十八届西电程序设计竞赛网络预选赛之Problem D 由比滨结衣的饼干(二分+前缀后缀)
  6. python加载模型包占用内存多大_加载pickle python对象会占用大量内存
  7. 关于python中带下划线的变量和函数 的意义
  8. 我就是一根儿筋 也许问题很简单
  9. DocumentHelper解析xml文件
  10. 中心极限与大数定理律的关系_多元函数的极限、连续性分析
  11. CSS和HTML的基础知识(一)——HTML常用标签的简介及用法
  12. win7c盘空间越来越小_C盘空间越来越小?学会这几招,让你轻松驾驭磁盘管理
  13. ubuntu查看默认python版本_更改Ubuntu默认python版本的两种方法python- Anaconda
  14. Android 第3方控件一览表
  15. php session auto_start,PHP出现 Warning: session_start()的解决方法
  16. 第 7 章 Neutron - 066 - Neutron 网络基本概念
  17. 2020MathorCup数学建模比赛A题D题思路
  18. linux命令行下载gcc,linux安装GCC详解
  19. java在文本框动态显示时间,在文本框中动态地显示当前时间,有木有人做过,指导下初学者...
  20. 警惕分布式常见的这十大坑

热门文章

  1. 插件测评:体验最新版 CSDN 浏览器助手,希望能够一起变得更好
  2. linux自动调代码格式,使用vim粘贴代码时格式变乱,自动缩进,自动加注释解决方案...
  3. 华为watch 3与Apple Watch series7?
  4. 区块链倪老师:写给区块链初创者的一封信(二)
  5. 一年40万次实验,字节跳动A/B测试平台是怎么炼出来的?
  6. 论投资六字心经——买预期,卖事实
  7. android ipv6测试,android ipv6网络下测试app运行状态测试
  8. 在线书籍推荐(持续更新中)
  9. 自然人代开需要准备什么?需要缴纳什么税?
  10. android 二进制流保存为bmp文件