监听用户退出程序,你的做法是青铜还是王者?

Python 关于pygame键盘事件处理 Python 关于pygame键盘事件q键退出处理 阅读详情

大家在写Python脚本时,经常会遇到用户交互的场景,然而其中不可或缺的一步就是告诉用户,输入某某键退出...那么,今天就来盘点下,有哪些实现退出场景的方式吧。

青铜级别
# 青铜
import sys

user_input = input("输入q,退出程序")
if user_input == 'q':
    sys.exit()

使用input来判断用户输入的方式,应该是最low的了吧?不仅需要输入,还需要用户敲击回车,才能够完成参数获取...适合Python入门一周的小选手。

白银级别
# 白银
import msvcrt

user_input = msvcrt.getche()
if user_input.decode() == 'q':
    exit()

msvcrt模块允许您访问Microsoft Visual C / C ++运行时库(MSVCRT)中的许多函数,可以动态监听单个char字符,然后返回byte字节。所以当你的退出不是单个字符,而是字符串时,还需要进一步封装...

王者级别

# 王者
import msvcrt

quit_command = 'quit'
listening_str = ''
while True:
    user_input = msvcrt.getche()
    if isinstance(user_input, bytes):
        user_input = user_input.decode()
    if user_input == '\b':
        listening_str = listening_str[:-1]
    elif user_input in ['\n', '\r']:
        listening_str = ''
    else:
        listening_str += user_input
    print('listening_str now is: %s' % listening_str)
    if listening_str == quit_command:
        exit()

我们通过一个while循环实时监控用户的输入,当用户回车时,清空字符串缓存。并且支持了用户的删除退格操作操作。相比于前两者仅支持单次判定更提升了功能。来看看下图的测试示例:

程序展示

让我们通过上图看下效果,简单执行几个场景的用例测试,均满足要求。有涉及到的用户退出监听的朋友们,快去感受下吧...
Tips:所有的用户监听操作,都不能直接在Pycharm下使用,会存在冲突,因为软件本身就是监听用户的一种哦...

The End

期待你关注我的公众号清风Python,如果你觉得不错,希望能动动手指转发给你身边的朋友们。
我的github地址:https://github.com/BreezePython

PyQt中的窗口事件监听 PyQt提供了丰富的窗口事件监听窗口事件监听机制,使得我们可以方便地对用户窗口事件监听机制,使得我们可以方便地对用户交互进行响应和处理。在PyQt中,我们可以通过监听窗口事件来实现对用户交互的响应和处理。在PyQt中,我们可以通过继承QWidget或QMainWindow类来创建窗口,并在窗口类中重写相应的事件处理方法来监听窗口事件。在这个方法中,我们添加了自定义的处理逻辑,即在关闭窗口时弹出一个消息框来确认是否真的要退出应用。在实际应用中,我们可以根据需要重写其他窗口事件的处理方法,比如。 阅读详情

相关推荐

关闭unity3d程序

unity3d卡死时可以可以打开程序并直接关闭当前打开的unity程序

Unity 启动exe 并且监听exe的关闭

unity启动exe

qq_42115600的博客 867

Zephyr RTOS详解

Zephyr 是一个开源的实时操作系统(RTOS),专为资源受限的嵌入式设备设计,支持多种架构(如 ARM Cortex-M、RISC-V、x86 等)。

weixin_43484713的博客 4108

学习如何通过监控按键中途退出python程序

本次学习使用的库是pynput 1、需求描述: 我需要让程序在运行时,用户可以通过键盘按键使得程序停止(这里不是和以前在命令行输入那样,想要有监控键盘再控制结束程序的效果 2、实现的局限版本 from pynput import keyboard import time # 导入线程库,因为监听键盘和鼠标都是阻塞的 import threading isEnd = False # 键盘按下执行的函数 使用try和except的原因是有特殊按键(功能键) def keyboard_on_pre

weixin_44001521的博客 5431

机器人控制入门:用SAC算法让机械臂学会抓取(PyBullet仿真教程)

本文详细介绍了如何使用SAC算法在PyBullet仿真环境中训练机械臂完成抓取任务。通过强化学习中的软Actor-Critic(SAC)算法,结合熵最大化机制和双Q网络架构,有效解决了机械臂控制中的探索难题。教程包含环境搭建、算法原理、状态空间设计、奖励函数优化等核心内容,并提供了实用的训练技巧和参数调优指南。

weixin_29091105的博客 362

UE5 Metahuman与Blender手动绑定:ARKit面部动画实战对比

面部动画是角色动画领域的核心技术,其核心原理在于通过驱动面部骨骼或混合形状来模拟真实肌肉运动,从而赋予数字角色生命力。这项技术的价值在于极大地提升了虚拟角色的表现力与沉浸感,广泛应用于游戏开发、影视制作、虚拟现实和实时交互应用。在技术实现路径上,开发者常面临工业化集成方案与高度自定义方案的选择。本文聚焦于使用行业标准的ARKit 52个面部混合形状数据,深度对比了虚幻引擎Metahuman的工业化流程与Blender手动绑定方案在视觉保真度、工作流效率、性能开销和扩展性上的差异,为不同项目规模与技术需求的团

weixin_33901926的博客 449

Unity3d监听手机暂停与退出事件

原文: http://www.cnblogs.com/kuangwu/archive/2013/06/18/3141865.html 做移动互联网类型的开放,很多情况得考虑移动设备的暂停与退出时,做某些数据操作或UI。 1,退出事件,Unity3d,InPut就包含了: Input.GetKey(KeyCode.Escape) 、 Input.GetKey(KeyCode.H

ybhjx的专栏 4386

【win11 cuda12.0安装tensorflow-gpu】

win11 cuda 12.0 安装 tensorflow-gpu

weixin_36299320的博客 3009

Unity 3D 监听键盘 返回键退出程序C#

//按返回键退出Application void Update () { if(Input.GetKey(KeyCode.Escape)){ Application.Quit(); }}    //按两次返回退出程序 float _waitTime = 2f;//前后两次按退出间隔时间if (_waitTime < 2) ...

dengzhongfu6635的博客 390

差分放大电路的计算

反馈,对于运算放大电路来说,运放工作在线性区,所以这里一定是负反馈,没有反馈(开环)或者是正反馈,那是比较器电路而不是放大电路,这时候运放工作在饱和区或称为非线性工作区,正因为饱和,输出才是电源电压的幅值。图2是一种带正反馈的运放电路,这里就不能叫运算放大电路了,因为运放的开环放大倍数理想是无限大,当然实际中不可能无限大,所以如下结构是迟滞电压比较器,运放工作在非线性区或饱和区。实际应用电路中,我们为了简化计算,也是用最简方法计算,经常使用的电路也是上述电路,令电阻相等关系,简化计算。

qq_40170041的博客 353

智能车竞赛走马观碑组:如何高效识别目标板并优化绕行策略(附实战代码)

本文深入探讨了智能车竞赛走马观碑组中,如何构建从图像识别到路径决策的全栈优化方案。针对目标板识别与绕行策略的核心难点,文章详细解析了基于MobileNetV2的高效识别流水线、结合预瞄点与纯追踪算法的平滑路径规划,以及横向与纵向协同控制策略,并提供了实战代码与调试指南,旨在全面提升小车的比赛表现。

o5p6q的博客 884

unity 退出程序前确认是否退出

void OnApplicationQuit() { Application.CancelQuit();//退出拦截 MessageCtrl.Instance.OpenConfirmView("关闭界面将终止,确认关闭?", "", () => { Application.Quit(); }); } ...

lizhenxiqnmlgb的博客 3558

基于的公司考勤系统(程序+开题报告)(开题报告+源码)

我们将研究和设计系统的架构和功能模块,包括员工信息管理模块、部门信息管理模块、考勤信息记录模块、工资信息计算模块、请假信息处理模块、奖惩信息管理模块、公告信息发布模块、上班打卡模块以及加班申请模块等。目的: 本项目旨在设计并实现一个基于的公司考勤系统,通过该系统,可以实现对员工、部门信息、考勤信息、工资信息、请假信息、奖惩信息、公告信息、上班打卡、加班申请等功能的统一管理。基于的公司考勤系统的设计与实现,旨在通过自动化技术提高考勤管理的效率和准确性,为企业管理提供有力的数据支持。最终成品以下面运行环境。

迟限程序设计 997

Unity 3D 退出函数简单监听

首先要知道u3d退出函数其实就一句代码 Application.Quit(); 然而有些开发者调用此函数时机不对,强迫症犯了,我们逆出它的dll函数,修改监听他的函数. public void Update() //逆向时一定要确定是否执行该函数 { if (Input.GetKeyDown(KeyCode.Escape)) { Application.Quit();...

Andrio的博客 3784

高云FPGA系列教程(2):FPGA点灯工程创建、程序下载和固化

相比于国外FPGA厂商EDA开发环境,几个G到几十个G的大小,高云云源软件安装包也很小巧,界面也很简洁,综合速度非常快,是我没想到的,好像在使用单片机一样,点一下就编译完成了,以本文简单的LED示例工程为例,比特流文件几乎在几秒钟内生成;无论是下载比特流文件到RAM还是Flash中,速度都很快,而且只有一种fs程序文件格式,不用再进行bit/mcs转换;云源软件自带的编辑器也很好用,和Notepad++界面差不多,而且快捷键很方便,具有基本的自动补全功能。

whik1194的博客 5461

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

监听程序退出的方法

1.Java 程序 通过Runtime.getRuntime.addShutdownHook(Thread t), 添加一个线程监控程序的退出,在线程中做一些清理操作 2.Win C程序 通过SetConsoleCtrlHandler(PHANDLER_ROUTINE handler,  true), 添加一个信号监听,handler 是一个回调函数,定义如下: BOOLhandl

linchuangsimeng的博客 1529

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

监测程序退出

Private Declare Function GetExitCodeProcess Lib "kernel32" (ByVal hProcess As Long, lpExitCode As Long) As LongPrivate Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal

Athoncj的专栏 1201

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Unity开发笔记:退出程序

众所周知: Unity分为两个模式,编辑器模式和应用程序模式 在两种模式下程序的关闭方法不一样的 代码: #if UNITY_EDITOR UnityEditor.EditorApplication.isPlaying = false; #else Application.Quit(); #endif ...

m0_46210273的博客 4755

监听获取程序退出事件(Linux、Windows、Java、C++)

为什么要监听程序退出事件就不用多说了,有各种各样的需求吧。主要是用于后台程序,比如要在程序退出的时候释放资源,关闭连接等等。 下面针对Java、C++在Windows、Linux下的处理分别进行介绍. 1.Java监听程序退出事件 Java本身是跨平台的,不必关系Windows还是Linux。具体做法如下: 通过Runtime.getRuntime().addShutdownHoo

jmppok的专栏 1万+

退出应用程序的两种监听方式

第一种是:监听返回键,弹出提示对话框 代码如下 代码运行后的结果 以上是第一种方式退出监听程序 第二种是点击两次返回键,提示是否退出 代码如下: package com.example.work0617; import android.app.Activity; import android.os.Handler; import android.o

name_Fay的博客 7471

Unity 监听键盘 返回键退出程序

Unity 监听键盘 返回键退出程序

qq_43667944的博客 1357

Unity各种平台检测用户退出

网上很多人在没有测试的情况的下瞎掰,真的是耽误别人时间。 这篇的前景是Unity在安卓端、ios、PC分别使用Sqlite数据库存储数据(这里我用来实现游戏的暂存):寒假找了个线上实习,有一个功能就是要游戏暂存,这是个消除游戏,没必要每一步都去操作数据库,我们只需要在用户退出时记录即可,并且我们需要根据退出的时机决定某些流程(因为这个游戏还有引导界面,游戏局数的控制),用户退出有几种情况: 1.用户直接后台杀死应用 2.用户通过退出(Application.Quit)退出 3.应用被非用户原因强制退出 我的

derbi123123的博客 3527

Unity——退出程序代码

在退出按钮的点击事件中添加以下代码: Application.Quit(); 即可实现退出程序的功能。

萌鼠喝酸奶的博客 4万+

Python读写yaml排版混乱还丢失注释?我来告诉你解决办法!

Python使用Yaml 日常我们在使用Python读写Yaml时,都是使用推荐的Pyyaml模块。 安装: pip install pyyaml 导入: import yaml 至于操作,简直不要太简单... yaml只有两个方法load、dump,而且使用完全和json模块一样。但真的如此吗?显然不是... Yaml安全告警 由于Yaml数据存在安全隐患,在使用pyyaml进行load时,会给...

清风Python 4531
上一篇: Flask项目能打包为单个exe文件运行?知道原理后简直不要太简单!
下一篇: 小号码春秋的故事
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值