Кто шарит в python нужна помощь, я пишу скрипт который при нажатии space должен дублировать его с определённой переодичностью.
Дублирует то он дублирует, но это продолжается и когда я отпускаю пробел
вот собственно код:
def main():
while True:
if keyboard.is_pressed("space"):
while True:
time.sleep(0.00015)
keyboard.press_and_release("space")
time.sleep(0.030)
main()
avion321321:
у вас бесконечный цикл
так и задумано, но он должен работать только при зажатом пробеле ,а не всегда
вот именно, а он у вас всегда true
Ответы
Ответ дал:
1
Ответ:
Когда вы нажимаете клавишу пробел, выполняется условие keyboard.is_pressed('space'). Если это условие выполняется, то вы попадаете с бесконечный цикл while True (строка 5). Вы один раз нажимаете пробел и попадаете в этот бесконечный цикл. А так как в нём не предусмотрено никаких условий завершения, то он, логично, никогда не завершится. Что бы исправить это, вы можете добавить условие завершения в цикл или изменить условия его выполнения, например:
while keyboard.is_pressed("space"):
time.sleep(time)
keyboard.press_and_release("space")
time.sleep(time)
P.S Не стоит копировать этот код. Я не знаю, какую библиотеку вы используете, и, соответственно, решения проблемы предлагаю "пальцем в небо"
Я не знаю, с какой библиотекой вы работаете. Абстрактный совет - попробуйте перехватить событие закрытия окна и написать к нему другую логику.
библиотеки tkinter keyboard time
Например, для встроенного фреймворка tkinter подобный перехват делается в одну строку (самый топорный если делать):
MainWindow.protocol('WM_DELETE_WINDOW", sys.exit)
где MainWindow - родительское окно (экземпляр tkinter.Tk)
MainWindow.protocol('WM_DELETE_WINDOW", sys.exit)
где MainWindow - родительское окно (экземпляр tkinter.Tk)
спасибо!
подобный "перехват" просто убьёт процесс приложения при закрытии окна. Но, насколько помню, tkinter сам прекрасно справляется с подчисткой мусора за собой при закрытии
простите что задаю много вопросов, а можно как нибудь сделать так чтобы после того как открылся интерфейс заработал другой скрипт
Обратите внимание на модули Threading, Multiprocessing, а так же некоторые функции модулей os и sys.
почитал пару статей по этому поводу, ничего не понял
Значит, вам ещё рановато лезть в такие дебри.
Вообще, из всех перечисленных модулей, для запуска другого скрипта из выполняемого, нужен только threading, что бы отправить функцию, запускающую другой скрипт в параллельный поток, что бы она не мешала основному скрипту. Но учтите, что при таком подходе параллельно запущенные скрипты никак не смогут изменять состояния друг друга
Вас заинтересует
2 года назад
2 года назад
2 года назад
2 года назад
7 лет назад
9 лет назад