1

我找到了一个游戏:memory.py here(向下滚动)或直接链接快照

我正在修改它。我要做的第一件事是从 QlineEdit 框中设置等待时间。

我改变了这个:

pygame.time.wait(500)

对此:

pygame.time.wait(self.ui.lineEdit.text()) 

并得到了他的错误:

pygame.time.wait(self.ui.lineEdit.text()) typeError: delay requires one integer argument

然后我用:

pygame.time.wait(int(self.ui.lineEdit.text()))

并得到了他的错误:

ValueError: invalid literal for int() with base 10: ''

我不知道该怎么办,有人知道如何解决这个问题吗?

先感谢您

4

2 回答 2

0

文本框返回一个空字符串。您应该首先检查字符串是否为空。

text = self.ui.lineEdit.text()
if text:
    time= 0 #or some default value if no time is specified
else
    time = int(text)
pygame.time.wait(time)
于 2013-04-24T18:13:51.027 回答
0

@salva Nicolas 是对的。

最好的检查方法是检查是否输入了文本。虽然这有问题。

如果你只是在行编辑中输入一个空格,你会得到一个错误。它仍然不是一个万无一失的方法。

要检查是否在 QLineEdit 中输入了有效文本,您需要使用验证器。

或者

您可以尝试使用 try 将 qlineedit 转换为整数或浮点数,如果它引发异常,您可以执行其他操作。

try:
    x_min=ast.literal_eval(str(self.ui.x_min_3d.text())) # Try to convert
except:
    x_min=0 # else do something else
于 2013-09-11T13:31:24.057 回答