Переключатель Python логический с функцией - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь переключить логическое значение с помощью отдельной функции.Если мои исследования верны, в Python нет указателей (я начинаю изучать их прямо сейчас), поэтому я не уверен, как решить эту проблему.

Для нажатия клавиш я использую библиотеку 'клавиатура' , которая использует обратные вызовы для горячих клавиш.Таким образом, я должен как-то передать переключатель как обратный вызов и мне нужен метод для его переключения.(Если у вас есть другой подход, который может решить эту проблему, это также приветствуется)

Выполнение этого в цикле 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()

Переменная должна быть согласованной, по крайней мере, в основнойзапрограммируйте саму себя (это также может быть согласовано в глобальном масштабе, что было моим последним подходом, который не сработал) и будет переключено, когда я использую свою горячую клавишу set.

1 Ответ

1 голос
/ 25 марта 2019

Это просто проблема с областью видимости переменных

Проверьте это

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
...