python为什么不接受大写或符号

python为什么不接受大写或符号,python,python-2.7,textbox,pygame,Python,Python 2.7,Textbox,Pygame,所附代码正确地接受数字或字母 使用限制(rest),但它不会接受 大写字母或类似+ 可能有一些简单的事情我没有做。我有 只是刚刚开始使用Python——我的其余代码似乎 正确地工作 “” 文本输入 限制某些输入 字母或数字(其余) ''' #将不接受大写或“+” 导入pygame、pygame.font、pygame.event、pygame.draw、字符串 导入系统 从pygame.locals导入* #屏幕大小 x_尺寸=600 y_尺寸=600 #限制 rest1='1234567890

所附代码正确地接受数字或字母 使用限制(rest),但它不会接受 大写字母或类似
+

可能有一些简单的事情我没有做。我有 只是刚刚开始使用Python——我的其余代码似乎 正确地工作

“”
文本输入
限制某些输入
字母或数字(其余)
'''
#将不接受大写或“+”
导入pygame、pygame.font、pygame.event、pygame.draw、字符串
导入系统
从pygame.locals导入*
#屏幕大小
x_尺寸=600
y_尺寸=600
#限制
rest1='1234567890-+'
rest2='abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz'
rest3=rest1+rest2#全部接受
def get_key():
而1:
event=pygame.event.poll()
如果event.type==KEYDOWN:
返回事件.key
其他:
通过
def显示框(屏幕、消息、x、y、静止):
“在屏幕上的框中打印消息”
fontobject=pygame.font.font(无,28)#字体大小
pygame.draw.rect(屏幕,(255,0,0),(x,y,250,30),1)#红色框轮廓
如果len(消息)!=0:
screen.blit(fontobject.render(消息,1,(255,0,0)),
(x,y))#红色文本
pygame.display.flip()
def清除箱(屏幕,x,y):
pygame.draw.rect(屏幕,(255255),(x,y,300,90),0)
pygame.display.flip()
def ask(屏幕、问题、x、y、休息):
#提问(屏幕、问题、位置x、y、限制)回答
pygame.font.init()
当前_字符串=[]
显示框(屏幕,(问题+”:“+string.join(当前字符串)”),x,y,rest)
而1:
inkey=get_key()
印刷印基
如果inkey==K_退格:
当前字符串=当前字符串[0:-1]
#打印当前字符串
elif inkey==K_返回:
打破
elif inkey>=127:
通过
静止状态下的elif chr(inkey):
z=chr(因基)
打印“z”,z
当前_string.append(chr(inkey))
清除框(屏幕,x,y)
显示框(屏幕,(问题+”:“+string.join(当前字符串)”),x,y,rest)
打印字符串.连接(当前\u字符串)
返回字符串.连接(当前\u字符串)
def main():
screen=pygame.display.set_模式((x_大小,y_大小))
屏幕填充((255255))
h=询问(屏幕,“数字”、40、50、rest1)
k=询问(屏幕,“字母”、40、70、rest2)
打印h,“数字”
打印k,“字母”
#=======================
pygame.quit()
sys.exit()
如果uuuu name_uuuuuu=='uuuuuu main:main()

键盘事件
KEYDOWN
keydup
(请参见模块)创建具有附加属性的对象。按下的键可以从
属性(例如
K_RETURN
K_a
)获得,并且
mod
属性包含一个带有附加修饰符的位集(例如
KMOD\u LSHIFT
)。“Unicode”属性提供键盘输入的Unicode表示

如果要获取大写字母,可以使用事件的
mod
属性对输入进行拼图,或者只使用
unicode
属性

在函数
get_key()
中返回事件的
键和
unicode

def get_key():
而1:
event=pygame.event.poll()
如果event.type==KEYDOWN:
返回event.key,event.unicode
其他:
通过
将unicode符号添加到字符串:

而1:
inkey,inunicode=get_key()
如果inkey==K_退格:
# [...]
静止状态下的elif inunicode:
当前_string.append(inunicode)

代码应该做什么?这里有很多代码需要查看,如果您对问题进行更详细的解释,您将更容易得到他人的帮助。您是否尝试打印
inkey
?我的猜测是pygame不会返回您认为的大写字母和其他符号,因此当您输入
M
时,您会得到
inkey
x
chr(x)!='M'
。它不接受“大写字母”,因为按下shift键时显示为完全不同的键。它显示您正在按shift键,而m not m该程序是一个多次调用的模块,用于更改/更新较长程序上的值。我曾尝试使用inkey,但在输入字母键之前,shift键给出了一个不可接受的值