首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >keyboard.is_pressed()中断循环

keyboard.is_pressed()中断循环
EN

Stack Overflow用户
提问于 2021-10-29 17:36:05
回答 2查看 344关注 0票数 1

我正在尝试做一些python,这个想法是,当按下键盘上的一个特殊键时--这里是$ and *--它将向我的服务器发出web请求。

它只能工作一次,所以如果我输入$,它就会发送请求,但是如果我再次输入它或者*它不起作用。所以我认为这是因为它破坏了循环,因为keyboard.is_pressed(),而我不知道如何解决这个问题

下面是代码:

代码语言:javascript
复制
import http.client
import keyboard

while True:
    if keyboard.is_pressed('*'):
        conn = http.client.HTTPConnection('server_ip:server_port')
        payload = "{\n\t\"value\" : 0\n}"
        headers = {'Content-Type': "application/json",'Accept': "application/json"}
        conn.request("POST", "/api", payload, headers)
        res = conn.getresponse()
        data = res.read()

    elif keyboard.is_pressed('$'):
        conn = http.client.HTTPConnection('server_ip:server_port')
        payload = "{\n\t\"value\" : 1\n}"
        headers = {'Content-Type': "application/json",'Accept': "application/json"}
        conn.request("POST", "/api", payload, headers)
        res = conn.getresponse()
        data = res.read()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-29 18:12:55

在这种情况下,有两个问题:

首先,我的服务器没有给出任何响应,但是代码想要得到响应,所以它在等待响应。所以我删除了if和elif部分的代码

代码语言:javascript
复制
 res = conn.getresponse()
    data = res.read()

其次,我尝试创建两个同名的http.client.HTTPConnection(),所以它给了我一个错误,所以我将第二个改为conn2,对于headers2payload2也是如此。

代码语言:javascript
复制
import http.client
import keyboard
import time

while True:
    if keyboard.is_pressed('Page_Up'):
        conn = http.client.HTTPConnection('server_ip:server_port')
        headers = {'Content-Type': "application/json",'Accept': "application/json"}
        payload = "{\n\t\"value\" : 0\n}"
        conn.request("POST", "/api", payload, headers)
        time.sleep(0.5)

    elif keyboard.is_pressed('Page_Down'):
        conn2 = http.client.HTTPConnection('server_ip:server_port')
        headers2 = {'Content-Type': "application/json",'Accept': "application/json"}
        payload2 = "{\n\t\"value\" : 1\n}"
        conn2.request("POST", "/api", payload2, headers2)
        time.sleep(0.5)
票数 0
EN

Stack Overflow用户

发布于 2021-10-29 17:46:43

在if和elif的末尾添加“继续”如何?

就像这样:

代码语言:javascript
复制
import http.client
import keyboard
import time

keep_looping = True
while keep_looping:
    if keyboard.is_pressed('*'):
        conn = http.client.HTTPConnection('server_ip:server_port')
        payload = "{\n\t\"value\" : 0\n}"
        headers = {'Content-Type': "application/json",'Accept': "application/json"}
        conn.request("POST", "/api", payload, headers)
        res = conn.getresponse()
        data = res.read()
        time.sleep(0.5)

    elif keyboard.is_pressed('$'):
        conn = http.client.HTTPConnection('server_ip:server_port')
        payload = "{\n\t\"value\" : 1\n}"
        headers = {'Content-Type': "application/json",'Accept': "application/json"}
        conn.request("POST", "/api", payload, headers)
        res = conn.getresponse()
        data = res.read()
        time.sleep(0.5)

    elif keyboard.is_pressed('/'):  # Add this in so you can stop the loop when needed. Use any keypress you like.
        keep_looping = False
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69772812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档