Python 用函数切换布尔值
Python toggle boolean with function
我正在尝试借助单独的函数来切换布尔值。
如果我的研究是正确的,Python 中没有任何指示(我现在开始学习它)所以我不确定如何解决这个问题。
对于按键,我使用的是库 'keyboard',它使用热键回调。因此,我必须以某种方式将切换作为回调传递,并且需要一种切换它的方法。 (如果你有不同的方法可以解决这个问题,我们也很感激)
像关闭调用一样在 while 循环中执行它是行不通的。因为键盘库没有简单的方法来检查按键按下或按键释放,所以它会被重复调用,直到按键被释放。
import keyboard
# Global Variables
running = False
# ------------
# FUNCTIONS
# ------------
def shutdown():
print("Tool shutting down!")
quit()
def toggle(b):
b = not b
def init():
running = False
keyboard.add_hotkey('alt+1', toggle, args=[running])
# ------------
# MAIN PROGRAM
# ------------
init()
while True:
if keyboard.is_pressed('alt+q'):
shutdown()
变量应该至少在主程序本身是一致的(它也可以是全局一致的,这是我最新的方法但没有成功)并且一旦我使用我设置的热键就被切换。
只是变量作用域的问题
检查这个
var1 = False
def changeVar(va):
va = not va
changeVar(var1)
print(var1)
def changeVar2():
global var1
var1 = not var1
changeVar2()
print(var1)
并且在您的代码中,您需要按如下方式定义切换:
def toggle(b):
global running
running = not running
我正在尝试借助单独的函数来切换布尔值。 如果我的研究是正确的,Python 中没有任何指示(我现在开始学习它)所以我不确定如何解决这个问题。
对于按键,我使用的是库 'keyboard',它使用热键回调。因此,我必须以某种方式将切换作为回调传递,并且需要一种切换它的方法。 (如果你有不同的方法可以解决这个问题,我们也很感激)
像关闭调用一样在 while 循环中执行它是行不通的。因为键盘库没有简单的方法来检查按键按下或按键释放,所以它会被重复调用,直到按键被释放。
import keyboard
# Global Variables
running = False
# ------------
# FUNCTIONS
# ------------
def shutdown():
print("Tool shutting down!")
quit()
def toggle(b):
b = not b
def init():
running = False
keyboard.add_hotkey('alt+1', toggle, args=[running])
# ------------
# MAIN PROGRAM
# ------------
init()
while True:
if keyboard.is_pressed('alt+q'):
shutdown()
变量应该至少在主程序本身是一致的(它也可以是全局一致的,这是我最新的方法但没有成功)并且一旦我使用我设置的热键就被切换。
只是变量作用域的问题
检查这个
var1 = False
def changeVar(va):
va = not va
changeVar(var1)
print(var1)
def changeVar2():
global var1
var1 = not var1
changeVar2()
print(var1)
并且在您的代码中,您需要按如下方式定义切换:
def toggle(b):
global running
running = not running