[英]Python+PDB: how to stop at breakpoint in function called from within PDB?
[英]How to make a function stop ignoring functions called within it Python
我有一個 function 可以讀取鍵盤,根據輸入應該打印一條特定的消息,但它一直忽略它並只打印控制號碼:
from pynput import keyboard
from multiprocessing import Process, Lock
from stickDerecho45Video import display
import time
mutex = Lock()
videomax = 1
def escribirValor(sacagawea):
global videomax
with mutex:
videomax = sacagawea
def frustracion():
print("1")
escribirValor(1)
def reflexivo():
print("2")
escribirValor(2)
def confusion():
print("3")
escribirValor(3)
def masVerguenza():
print("4")
escribirValor(4)
def Input():
while True:
print("wait for key input")
with keyboard.GlobalHotKeys({
'<left>+<up>': frustracion,
'<right>+<up>': reflexivo,
'<right>+<down>': confusion,
'<left>+<down>': masVerguenza})as h:
h.join()
display(videomax)
time.sleep(0.25)
它應該調用的函數是這個:
from subprocess import run #from stickDerecho45Input import leerValor #,leerNombre 導入時間
def display(x):
if x == 1:
print("frustracion")
#time.sleep(0.25)
if x == 2:
print("reflexivo")
#time.sleep(0.25)
if x == 3:
print("confusion")
#time.sleep(0.25)
if x == 4:
print("masVerguenza")
#time.sleep(0.25)
if x == 5:
print("finito")
試驗輸入是按熱鍵中聲明的四個任意組合,output 是一個數字列表 1 1 1 2 2 2 2 4 我用它來知道是否調用了熱鍵功能。 取決於輸入,但絕不是預期的顯示。
理想的 output 將是 = frustracion frustracion reflexivo confusion。
我正在使用 Pynput 模塊來監控鍵盤。
一個非常明顯的錯誤是, escribirValor()
將參數的值分配給名為videomax
的局部變量
可能還有其他問題,但這絕對是您必須解決的問題。
它應該分配給具有該名稱的全局變量:
所以
def escribirValor(sacagawea):
global videomax
with mutex:
videomax = sacagawea
第一次反饋后的附錄:我不知道你的鍵盤模塊,但可能是縮進問題。
您能告訴我們通過對代碼進行以下修改后得到的 output 是什么嗎:
def Input():
while True:
print("wait for key input")
with keyboard.GlobalHotKeys({
'<left>+<up>': frustracion,
'<right>+<up>': reflexivo,
'<right>+<down>': confusion,
'<left>+<down>': masVerguenza})as h:
h.join()
print("joined")
print("after with statement")
display(videomax)
print("display called")
time.sleep(0.25)
看起來 PYNPUT 熱鍵 class 是非常具有侵入性的,所以即使在單獨的線程中,它也不會識別任何它不調用的東西。 解決方案是將顯示調用置於分配給熱鍵的功能中。
大量修改后,代碼如下:
輸入腳本:
from pynput import keyboard
from stickDerecho45Video import display
import time
def frustracion():
display(1)
def reflexivo():
display(2)
def confusion():
display(3)
def masVerguenza():
display(4)
with keyboard.GlobalHotKeys({
'<left>+<up>': frustracion,
'<right>+<up>': reflexivo,
'<right>+<down>': confusion,
'<left>+<down>': masVerguenza})as h:
h.join()
def Despliegue():
while True:
time.sleep(0.25)
顯示腳本:
import time
def display(x):
if x == 1:
print("frustracion")
time.sleep(0.25)
if x == 2:
print("reflexivo")
time.sleep(0.25)
if x == 3:
print("confusion")
time.sleep(0.25)
if x == 4:
print("masVerguenza")
time.sleep(0.25)
if x == 5:
print("finito")
time.sleep(0.25)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.