簡體   English   中英

Python程序可在CMD中運行,但導出到.exe時無法

[英]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循環中

使用repr()打印輸入

這是Windows上getch的已記錄行為。 箭頭鍵首先返回0x00或0xE0,然后返回鍵代碼。 參見文檔

讀取功能鍵或箭頭鍵時,每個功能必須調用兩次; 第一次調用返回0或0xE0,第二次調用返回實際的密鑰代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM