Python pygame.Resizeable给定键错误
稍微了解一下代码;我想做的是把一个部分变成一个Dict,这样我就可以轻松地管理它。 当然,因为ConfigParser以字符串的形式返回所有内容(大多数情况下都是这样),所以我必须将其更改为所需的类型。这就是我的问题开始的地方 代码 config.ini 错误Python pygame.Resizeable给定键错误,python,python-2.7,pygame,configparser,Python,Python 2.7,Pygame,Configparser,稍微了解一下代码;我想做的是把一个部分变成一个Dict,这样我就可以轻松地管理它。 当然,因为ConfigParser以字符串的形式返回所有内容(大多数情况下都是这样),所以我必须将其更改为所需的类型。这就是我的问题开始的地方 代码 config.ini 错误 回溯(最近一次呼叫最后一次): 文件“C:\Users\***\Desktop\config2.py”,第35行,在 loadfile(“config.ini”).load() 文件“C:\Users\***\Desktop\config
回溯(最近一次呼叫最后一次):
文件“C:\Users\***\Desktop\config2.py”,第35行,在
loadfile(“config.ini”).load()
文件“C:\Users\***\Desktop\config2.py”,第27行,已加载
value=vars()[parser.get(section\u name,name)]
KeyError:“pygame.RESIZABLE”
同样的错误发生在我将代码放入自己的类之前,如果我使用了
import pygame
,但当我使用pygame import*中的时,它神秘地消失了。下面是我为此编写的一些代码,它不使用ConfigParser
,但应该可以工作。
(至少在您的情况下)
输出(从您的config.ini)
此外,如果您对ini文件使用以下类型的格式(格式可能不是正确的单词),则可能更易于使用
[Display]
Width=800
Height=600
Depth=32
Caption=45
Flags=pygame.RESIZABLE
Icon=None
Mouse=True
FPS=30
-----
[Keys]
Left=pygame/K_LEFT
Right=pygame.K_RIGHT
Jump=pygame.K_UP
Duck=pygame.K_DOWN
Sprint=pygame.K_RSHIFT
Attack_1=pygame.K_a
Attack_2=pygame.K_s
Attack_3=pygame.K_d
gameMenu=pygame.K_ESCAPE
Dialogue=pygame.K_RETURN
-----
这是可以执行的(在从'----'拆分并删除其中每一行的第一行。([keys],[display])以下是我为此编写的一些代码,它不使用ConfigParser
,但应该可以工作。
(至少在您的情况下)
输出(从您的config.ini)
此外,如果您对ini文件使用以下类型的格式(格式可能不是正确的单词),则可能更易于使用
[Display]
Width=800
Height=600
Depth=32
Caption=45
Flags=pygame.RESIZABLE
Icon=None
Mouse=True
FPS=30
-----
[Keys]
Left=pygame/K_LEFT
Right=pygame.K_RIGHT
Jump=pygame.K_UP
Duck=pygame.K_DOWN
Sprint=pygame.K_RSHIFT
Attack_1=pygame.K_a
Attack_2=pygame.K_s
Attack_3=pygame.K_d
gameMenu=pygame.K_ESCAPE
Dialogue=pygame.K_RETURN
-----
这是可以执行的(在从“----”拆分并删除其中每一行的第一行后。([keys],[display])感谢您提供的代码。如果没有人解释我做错了什么(因为我使用ConfigParser做了很多事情,所以我想知道我是否做错了什么),我将选择您的答案为最佳。@DragoonHP我从未使用过ConfigParser
,但您的config.ini似乎足够简单,只需使用BIFs(内置函数)即可处理,因此为此编写了代码:)是的,它很简单,但我也在用它在我的引擎中加载地图,所以我想知道我是否做错了什么。但也许最后,我会用你的代码加载设置;它非常简单和灵活。:-@DragoonHP如果代码有用,请接受,因为我需要声誉:):OI我要等到明天;如果没有人解释,我会选择你的答案。很糟糕,我不能给你一个好答案的名声。谢谢你的密码。如果没有人解释我做错了什么(因为我在很多事情上使用ConfigParser,所以我想知道我是否做错了什么),我会选择你的答案作为最佳答案。@DragoonHP我从未使用过ConfigParser
,但你的config.ini似乎足够简单,只需使用BIFs(内置函数)即可处理,所以为它编写了代码:)是的,它很简单,但我也在用它在我的引擎中加载贴图,所以我想知道我是否做错了什么。但也许最后,我会用你的代码来加载设置;它非常简单和灵活。:-)@龙骑兵请接受,如果代码,如果它有帮助,因为我需要的声誉:):我要等到明天;如果没有人解释,我会选择你的答案。真糟糕,我不能因为你的回答而给你名声。
Traceback (most recent call last):
File "C:\Users\***\Desktop\config2.py", line 35, in <module>
loadfile("config.ini").load()
File "C:\Users\***\Desktop\config2.py", line 27, in load
value = vars()[ parser.get( section_name, name ) ]
KeyError: 'pygame.RESIZABLE'
class loadfile(object):
def __init__(self, filename):
self.filename = filename
def load(self):
x = open(self.filename).read() # open as file and read
d,k = x.split('; Key configuration;') # split at Key configration
d = d.splitlines()
k = k.splitlines()
ddict = {}
for i in d:
i = i.split(':')
i = [z.strip() for z in i] # strip whitespace(s)
if len(i) == 2: # a valid assignment line
ddict[i[0]] = i[1] # assignment of value
#same for keys
kdict = {}
for i in k:
i = i.split(':')
i = [z.strip() for z in i]
if len(i) == 2:
kdict[i[0]] = i[1]
print '---Display---'
for key in kdict:
print '%10s:%19s' % (key,kdict[key]) # print display part
print '---Keys---'
for key in ddict:
print '%10s:%19s' % (key,ddict[key]) # print key part
self.kdict = kdict
self.ddict = ddict
def save(self):
pass
x = loadfile("config.ini")
x.load()
---Display---
Attack_1: pygame.K_a
Dialogue: pygame.K_RETURN
Right: pygame.K_RIGHT
Jump: pygame.K_UP
Attack_3: pygame.K_d
Attack_2: pygame.K_s
Duck: pygame.K_DOWN
Sprint: pygame.K_RSHIFT
gameMenu: pygame.K_ESCAPE
Left: pygame/K_LEFT
---Keys---
Caption: 45
Height: 600
Width: 800
Depth: 32
Flags: pygame.RESIZABLE
FPS: 30
Mouse: True
Icon: None
[Display]
Width=800
Height=600
Depth=32
Caption=45
Flags=pygame.RESIZABLE
Icon=None
Mouse=True
FPS=30
-----
[Keys]
Left=pygame/K_LEFT
Right=pygame.K_RIGHT
Jump=pygame.K_UP
Duck=pygame.K_DOWN
Sprint=pygame.K_RSHIFT
Attack_1=pygame.K_a
Attack_2=pygame.K_s
Attack_3=pygame.K_d
gameMenu=pygame.K_ESCAPE
Dialogue=pygame.K_RETURN
-----