栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Wxpython添加快捷键(可实现CMD+W关闭程序)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Wxpython添加快捷键(可实现CMD+W关闭程序)

目录
  • 添加退出功能到菜单
  • 设置快捷键键位
  • 退出函数

添加退出功能到菜单
class UserLogin(wx.frame):
    '''
    登录界面
    '''

    # 初始化登录界面
    def __init__(self, *args, **kw):
        # ensure the parent's __init__ is called
        super(UserLogin, self).__init__(*args, **kw)
        # 设置窗口屏幕居中
        self.Center()
        # 创建窗口
        self.pnl = wx.Panel(self)
        # 调用登录界面函数
        self.LoginInterface()
		#此处开始往下是相关代码
        menuBar = wx.MenuBar()

        menu = wx.Menu()
        m_exit = menu.Append(wx.ID_EXIT, "&ExittAlt-X",
                             "Close window and exit program.")
        self.Bind(wx.EVT_MENU, self.OnClose, m_exit)
        menuBar.Append(menu, "&StudentSys")

设置快捷键键位

在界面的代码段落中添加如下代码

def LoginInterface(self):
	#省略了前面的代码……
	entries = [wx.AcceleratorEntry() for i in range(2)]
	# range()中的数字与下面的快捷键数量相等

    # entries[0].Set(wx.ACCEL_CTRL, ord('N'), ID_NEW_WINDOW)
    entries[0].Set(wx.ACCEL_CTRL, ord('W'), wx.ID_EXIT)
    entries[1].Set(wx.ACCEL_CTRL, ord('I'), wx.ID_about)
    # entries[3].Set(wx.ACCEL_NORMAL, wx.WXK_DELETE, wx.ID_CUT)

    accel = wx.AcceleratorTable(entries)
    self.SetAcceleratorTable(accel)

这里entries[0].Set(wx.ACCEL_CTRL, ord('W'), wx.ID_EXIT)这行是设置的关键,wx.ACCEL_CTRL就是按下control的意思(MacOS下默认control键为command键,如果要使用control键是wx.ACCEL_RAW_CONTROL)后面第二个参数就是W键的ASCII值,代表这个键位,wx.ID_EXIT表示执行的程序,这个是wxpython内置的

退出函数
    def OnClose(self, event):
        dlg = wx.MessageDialog(self,
                               "未保存的工作将丢失!",
                               "确认退出?", wx.OK | wx.CANCEL | wx.ICON_QUESTION)
        result = dlg.ShowModal()
        dlg.Destroy()
        if result == wx.ID_OK:
            self.Destroy()

然后试验一下就可以在程序里CMD+W退出程序了w

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/303712.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号