小编Ult*_*gum的帖子

退出python程序中的函数

我有一个在Python中运行的程序,没有控制台存在(也就是说,我使用py2exe编译它).我希望人们能够从主菜单中退出,或者通过游戏中的特定按键(例如,Shift + Q)退出.我现在在Windows中运行它,虽然我正在编译Linux/Mac版本.如果没有"while"循环运行,按下X按钮就可以正常运行,并且正确关闭它,否则它似乎"存储"关闭命令等​​待直到当前循环关闭.

至于菜单选项,我仔细查看了文档和Stackoverflow,并尝试了quit(),exit(),sys.exit()以及我能找到的每个组合,但每次我得到:

Traceback (most recent call last):
  File "alphatime.pyw", line 61177, in <module>
  File "alphatime.pyw", line 53970, in place_menu
NameError: global name 'sys' is not defined
Run Code Online (Sandbox Code Playgroud)

如果我尝试sys.exit,然后:

Traceback (most recent call last):
  File "alphatime.pyw", line 61177, in <module>
  File "alphatime.pyw", line 53970, in place_menu
NameError: global name 'quit' is not defined
Run Code Online (Sandbox Code Playgroud)

如果我尝试"退出()".我听说'提升'就像需要关闭程序一样,但我不清楚这意味着什么(我是Python的新手)以及我将如何做到这一点.

所以,我的问题是双重的.

首先,我是否可以在循环中放置一些用于识别按键的内容,这些内容会识别出被点击的"X"并关闭?

其次,是否有适当的命令才能关闭程序?我无法弄清楚为什么这些命令不起作用,而且我有很多人抱怨使用它崩溃的程序,或者他们必须使用ctrl-alt-del,或者其他什么.我相信

import os
try:
  os._exit(return_code)
except:
  pass
Run Code Online (Sandbox Code Playgroud)

会工作,但在这一点上,我不确定我是否足够胜任python以适当地部署它.提前致谢!

python

3
推荐指数
1
解决办法
8183
查看次数

Python搁置错误 - 声明NoneType,但对象*是*

我刚刚碰到了一个完全奇怪的错误.我将选择的东西保存到一个文件中.其中一个是名为Tracker的类的版本,此副本称为跟踪器.

        file = shelve.open(worldname, 'n')

        file['Terramap'] = terramap
        file['Satmap'] = satmap
        file['Gasmap'] = gasmap
        file['Planetset'] = planetset
        file['World'] = minimap
        file['Picture'] = picturemap                                    
        file['Worlddata'] = worlddata
        file['Dimension'] = dimension
        print "check", len(tracker.families)
        file['Tracker'] = tracker
        file['Schedule'] = schedule
        file['Time'] = time
        file.close()      
Run Code Online (Sandbox Code Playgroud)

如果我在文件之前从跟踪器上打印了一些东西,纯粹是为了测试该跟踪器仍然存在,它确实可以检测到跟踪器.但后来单行,它出现了:

  File "C:\Users\Mark\Desktop\Ultima Ratio Regum\URR0-2-1.py", line 17522, in world_menu
    file['Tracker'] = tracker
  File "C:\Python27\lib\shelve.py", line 132, in __setitem__
    p.dump(value)
TypeError: expected string or Unicode object, NoneType found
Run Code Online (Sandbox Code Playgroud)

我只是......难过.这从来没有发生过,我也看不出这是怎么回事!任何人都可以对此有所了解吗?我一直在做的就是今天向追踪器添加一些东西,但是追踪器只存储了几千个字符串列表,但就是这样.但是,如果我在保存开始之前创建了一个新的跟踪器,它会保存得很好.

编辑:

运行pickle.dumps(跟踪器)显示:

  File "C:\Users\Mark\Desktop\Ultima Ratio Regum\29-12-test.py", line 17515, in world_menu …
Run Code Online (Sandbox Code Playgroud)

python shelve nonetype

2
推荐指数
1
解决办法
1412
查看次数

标签 统计

python ×2

nonetype ×1

shelve ×1