python-3.x 如何通过键盘启动和停止同一循环

hmae6n7t  于 2023-03-04  发布在  Python
关注(0)|答案(4)|浏览(168)

我想做一个游戏的宏点击器,但我不知道如何开始和停止点击键盘上的同一键循环。这里是我在哪里:

def start_pvp_clicking():
    bind_pvp_key = entry1.get()
    pyautogui.PAUSE = 0.08
    while True:
        counter = 0
        if keyboard.is_pressed(bind_pvp_key):
             while counter == 0:
                print("clicking")
                if keyboard.is_pressed(bind_pvp_key):
                    while True:
                        print("not clicking")
                        break

当我按下一个键时,循环正在启动,但我不能停止它并通过同一个键再次运行。

qgzx9mmu

qgzx9mmu1#

counter不会在每次循环后更新,它将永远保持0,所以程序将永远运行。
只需将计数器更新为counter + 1,以防止无限循环和更改(while counter == 0)因为那个循环会在计数器大于0之后停止,而且你有3个while循环,最后一个糟透了,所以没有必要再加上最后一个循环,在第一循环调用(while True)中,它将永远运行,因为True将永远保持True
我建议添加一个名为gameTicks = 0.02的参数,然后只是暂时停止每个gameTicks (0.02)的功能。如果你照我说的做了,程序应该能很好地工作。

n3h0vuf2

n3h0vuf22#

试试这样的方法:

while True:
    key_togle = 0
    if keyboard.is_pressed(bind_pvp_key):
        key_togle = 1
        while key_togle:
            print('Doing stuff')
            if keyboard.is_pressed(bind_pvp_key):
                key_togle = 0

    print('Not doing stuff')

说明:您需要管理如何进入和退出循环,因此基本上添加一个用于中断内部循环的变量和一个用于更改变量值的条件。

2sbarzqh

2sbarzqh3#

这个怎么样?

key_togle = 0
while True:
    if keyboard.is_pressed(bind_pvp_key):
        key_togle ^= 1
    if key_togle:
        print('do something')
bweufnob

bweufnob4#

一周前我看了你的帖子,我也有同样的疑问。现在我的问题解决了,我希望你的也一样。

#Importing Libraries
import time
import keyboard

key_toggle = False

def DoSomething():        #Function starts

    global key_toggle        #To call the global variable
    key_toggle = not key_toggle        #This works as an ON/OFF switch

    if key_toggle:        #The if statement will always execute, if key_toggle = True
        
        print("\nBot is ON")        #Optional
        time.sleep(0.5)        #The delay is important. 0.4s is the lowest that works for me 

        while keyboard.is_pressed('q') == False:       #The main recipe. Until you press 'Q' the loop won't stop.

            print("\nLooping")
            #YOUR CODE HERE!

    else:
        print("\nBot is OFF")
        time.sleep(0.5)        #Function ends

keyboard.add_hotkey('Q', DoSomething)       #The DoSomething() function will start with a press of 'Q'
print("Press Q to toggle")
keyboard.wait()        #The wait() function awaits a certain key to be pressed.

所有的解释都在代码块中完成了。希望有帮助。干杯!

相关问题