[英]Python program working in CMD but not when exported to .exe
我遇到一個問題,其中從命令提示符運行時我的python程序可以正常運行,但是導出到exe時不能正常運行。 具體來說,我在這段代碼中遇到問題,也許有更好的方法可以做到這一點?:
def select_pcb_num(self, boardDrawingNumber):
xTuple = XTuple()
temp = xTuple.find_pcb_item_number(boardDrawingNumber)
if len(temp)>1:
iSelect = int(0)
rawChar = ''
query = '{0} variants found, select correct board [up/down]: {1}\t\t\t\t'
sys.stdout.write(query.format(len(temp), temp[iSelect]))
rawChar = msvcrt.getch()
while not rawChar == '\r':
if ord(rawChar) == int(72): # upkey
iSelect = (iSelect + 1)%len(temp)
elif ord(rawChar) == int(80): # downkey
iSelect = (iSelect - 1)%len(temp)
sys.stdout.write('\r')
sys.stdout.write(query.format(len(temp), temp[iSelect]))
rawChar = msvcrt.getch()
sys.stdout.write('\n')
return temp[iSelect]
else:
return temp
在命令提示符下,它可以正確返回到行的開頭,並在按下向上或向下箭頭時覆蓋它。 但是,導出到exe時,它會導致重新打印同一行,然后打印正確的行。 請查看示例圖片,不應該打印帶有紅色箭頭的行,並且不應該有任何新行,因為我沒有進入'\\ n',因為沒有選擇。
更新:使用repr()方法打印的輸入看起來像當按下向下箭頭時首先注冊為'\\ xe0'而不是'P',為什么編譯為exe會導致這種情況? 我也看不到為什么要添加新行,因為它應該在while循環中
這是Windows上getch
的已記錄行為。 箭頭鍵首先返回0x00或0xE0,然后返回鍵代碼。 參見文檔 :
讀取功能鍵或箭頭鍵時,每個功能必須調用兩次; 第一次調用返回0或0xE0,第二次調用返回實際的密鑰代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.