gpt4 book ai didi

Python 程序在 CMD 中工作但在导出到 .exe 时不工作

转载 作者:可可西里 更新时间:2023-11-01 10:36:52 25 4
gpt4 key购买 nike

我遇到一个问题,我的 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' 因为没有进行选择。

enter image description here

更新:使用方法 repr() 打印的输入看起来像按下向下箭头时它首先注册为 '\xe0' 而不是 'P',为什么编译为 exe 会导致这个?我也不明白为什么要添加新行,因为它应该在 while 循环中

printing input using repr()

最佳答案

这是在 Windows 上记录的 getch 行为。箭头键首先返回 0x00 或 0xE0,然后是键码。参见 documentation :

When reading a function key or an arrow key, each function must be called twice; the first call returns 0 or 0xE0, and the second call returns the actual key code.

关于Python 程序在 CMD 中工作但在导出到 .exe 时不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21164233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com