Python PyGame中的实时输入
我正在尝试编写一个小型的piggybank程序。我已经有了一个有一些背景和文本的窗口,但我需要为用户添加一个功能,让他向piggybank中添加钱。当用户按“1”时,他可以看到文本“您想添加多少?”这就是我的问题开始的地方。。。这是我编程的第三天,我甚至不知道我在找什么。我想实时显示用户输入的数量。有什么建议吗 这是我到目前为止的代码(我能理解:p)Python PyGame中的实时输入,python,text,pygame,Python,Text,Pygame,我正在尝试编写一个小型的piggybank程序。我已经有了一个有一些背景和文本的窗口,但我需要为用户添加一个功能,让他向piggybank中添加钱。当用户按“1”时,他可以看到文本“您想添加多少?”这就是我的问题开始的地方。。。这是我编程的第三天,我甚至不知道我在找什么。我想实时显示用户输入的数量。有什么建议吗 这是我到目前为止的代码(我能理解:p) 下面是一个简短的例子: #creates a new string, that will store the character you have
下面是一个简短的例子:
#creates a new string, that will store the character you have written
number_str = ""
#create a new Font object that is used to render the string into a Surface object
font_renderer = pygame.font.Font("monospace", 15)
while True:
screen.fill((0,0,0)) # fill the whole screen with a black color
# create a new Surface object from a string, where the text is white.
rendered_number = font_renderer.render(number_str, True, (255,255,255))
#draws the created Surface onto the screen at position 100,100
screen.blit(rendered_number, (100, 100))
# updates the screen to show changes
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if pygame.KEY_0 < event.key < pygame.KEY_9: # checks the key pressed
character = chr(event.key) #converts the number to a character
number_str += str(character) #adds the number to the end of the string
#创建一个新字符串,该字符串将存储您编写的字符
number_str=“”
#创建用于将字符串渲染为曲面对象的新字体对象
font\u renderer=pygame.font.font(“monospace”,15)
尽管如此:
屏幕。填充((0,0,0))#用黑色填充整个屏幕
#从文本为白色的字符串创建新的曲面对象。
rendered_number=font_renderer.render(number_str,True,(255255))
#在位置100100处将创建的曲面绘制到屏幕上
屏幕。blit(渲染的_编号,(100100))
#更新屏幕以显示更改
pygame.display.flip()
对于pygame.event.get()中的事件:
如果event.type==pygame.KEYDOWN:
如果pygame.KEY_0
以下是一个简短的示例:
#creates a new string, that will store the character you have written
number_str = ""
#create a new Font object that is used to render the string into a Surface object
font_renderer = pygame.font.Font("monospace", 15)
while True:
screen.fill((0,0,0)) # fill the whole screen with a black color
# create a new Surface object from a string, where the text is white.
rendered_number = font_renderer.render(number_str, True, (255,255,255))
#draws the created Surface onto the screen at position 100,100
screen.blit(rendered_number, (100, 100))
# updates the screen to show changes
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if pygame.KEY_0 < event.key < pygame.KEY_9: # checks the key pressed
character = chr(event.key) #converts the number to a character
number_str += str(character) #adds the number to the end of the string
#创建一个新字符串,该字符串将存储您编写的字符
number_str=“”
#创建用于将字符串渲染为曲面对象的新字体对象
font\u renderer=pygame.font.font(“monospace”,15)
尽管如此:
屏幕。填充((0,0,0))#用黑色填充整个屏幕
#从文本为白色的字符串创建新的曲面对象。
rendered_number=font_renderer.render(number_str,True,(255255))
#在位置100100处将创建的曲面绘制到屏幕上
屏幕。blit(渲染的_编号,(100100))
#更新屏幕以显示更改
pygame.display.flip()
对于pygame.event.get()中的事件:
如果event.type==pygame.KEYDOWN:
如果pygame.KEY_0
以下是一个简短的示例:
#creates a new string, that will store the character you have written
number_str = ""
#create a new Font object that is used to render the string into a Surface object
font_renderer = pygame.font.Font("monospace", 15)
while True:
screen.fill((0,0,0)) # fill the whole screen with a black color
# create a new Surface object from a string, where the text is white.
rendered_number = font_renderer.render(number_str, True, (255,255,255))
#draws the created Surface onto the screen at position 100,100
screen.blit(rendered_number, (100, 100))
# updates the screen to show changes
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if pygame.KEY_0 < event.key < pygame.KEY_9: # checks the key pressed
character = chr(event.key) #converts the number to a character
number_str += str(character) #adds the number to the end of the string
#创建一个新字符串,该字符串将存储您编写的字符
number_str=“”
#创建用于将字符串渲染为曲面对象的新字体对象
font\u renderer=pygame.font.font(“monospace”,15)
尽管如此:
屏幕。填充((0,0,0))#用黑色填充整个屏幕
#从文本为白色的字符串创建新的曲面对象。
rendered_number=font_renderer.render(number_str,True,(255255))
#在位置100100处将创建的曲面绘制到屏幕上
屏幕。blit(渲染的_编号,(100100))
#更新屏幕以显示更改
pygame.display.flip()
对于pygame.event.get()中的事件:
如果event.type==pygame.KEYDOWN:
如果pygame.KEY_0
以下是一个简短的示例:
#creates a new string, that will store the character you have written
number_str = ""
#create a new Font object that is used to render the string into a Surface object
font_renderer = pygame.font.Font("monospace", 15)
while True:
screen.fill((0,0,0)) # fill the whole screen with a black color
# create a new Surface object from a string, where the text is white.
rendered_number = font_renderer.render(number_str, True, (255,255,255))
#draws the created Surface onto the screen at position 100,100
screen.blit(rendered_number, (100, 100))
# updates the screen to show changes
pygame.display.flip()
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if pygame.KEY_0 < event.key < pygame.KEY_9: # checks the key pressed
character = chr(event.key) #converts the number to a character
number_str += str(character) #adds the number to the end of the string
#创建一个新字符串,该字符串将存储您编写的字符
number_str=“”
#创建用于将字符串渲染为曲面对象的新字体对象
font\u renderer=pygame.font.font(“monospace”,15)
尽管如此:
屏幕。填充((0,0,0))#用黑色填充整个屏幕
#从文本为白色的字符串创建新的曲面对象。
rendered_number=font_renderer.render(number_str,True,(255255))
#在位置100100处将创建的曲面绘制到屏幕上
屏幕。blit(渲染的_编号,(100100))
#更新屏幕以显示更改
pygame.display.flip()
对于pygame.event.get()中的事件:
如果event.type==pygame.KEYDOWN:
如果pygame.KEY_0
您可能想做一些类似于教程中所述的事情:
"""Edit text with the keyboard."""
import pygame
from pygame.locals import *
import time
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GRAY = (200, 200, 200)
pygame.init()
screen = pygame.display.set_mode((640, 240))
text = 'this text is editable'
font = pygame.font.SysFont(None, 48)
img = font.render(text, True, RED)
rect = img.get_rect()
rect.topleft = (20, 20)
cursor = Rect(rect.topright, (3, rect.height))
running = True
background = GRAY
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
if event.type == KEYDOWN:
if event.key == K_BACKSPACE:
if len(text)>0:
text = text[:-1]
else:
text += event.unicode
img = font.render(text, True, RED)
rect.size=img.get_size()
cursor.topleft = rect.topright
screen.fill(background)
screen.blit(img, rect)
if time.time() % 1 > 0.5:
pygame.draw.rect(screen, RED, cursor)
pygame.display.update()
pygame.quit()
您可能需要执行教程中所述的操作:
"""Edit text with the keyboard."""
import pygame
from pygame.locals import *
import time
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GRAY = (200, 200, 200)
pygame.init()
screen = pygame.display.set_mode((640, 240))
text = 'this text is editable'
font = pygame.font.SysFont(None, 48)
img = font.render(text, True, RED)
rect = img.get_rect()
rect.topleft = (20, 20)
cursor = Rect(rect.topright, (3, rect.height))
running = True
background = GRAY
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
if event.type == KEYDOWN:
if event.key == K_BACKSPACE:
if len(text)>0:
text = text[:-1]
else:
text += event.unicode
img = font.render(text, True, RED)
rect.size=img.get_size()
cursor.topleft = rect.topright
screen.fill(background)
screen.blit(img, rect)
if time.time() % 1 > 0.5:
pygame.draw.rect(screen, RED, cursor)
pygame.display.update()
pygame.quit()
您可能需要执行教程中所述的操作:
"""Edit text with the keyboard."""
import pygame
from pygame.locals import *
import time
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GRAY = (200, 200, 200)
pygame.init()
screen = pygame.display.set_mode((640, 240))
text = 'this text is editable'
font = pygame.font.SysFont(None, 48)
img = font.render(text, True, RED)
rect = img.get_rect()
rect.topleft = (20, 20)
cursor = Rect(rect.topright, (3, rect.height))
running = True
background = GRAY
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
if event.type == KEYDOWN:
if event.key == K_BACKSPACE:
if len(text)>0:
text = text[:-1]
else:
text += event.unicode
img = font.render(text, True, RED)
rect.size=img.get_size()
cursor.topleft = rect.topright
screen.fill(background)
screen.blit(img, rect)
if time.time() % 1 > 0.5:
pygame.draw.rect(screen, RED, cursor)
pygame.display.update()
pygame.quit()
您可能需要执行教程中所述的操作:
"""Edit text with the keyboard."""
import pygame
from pygame.locals import *
import time
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GRAY = (200, 200, 200)
pygame.init()
screen = pygame.display.set_mode((640, 240))
text = 'this text is editable'
font = pygame.font.SysFont(None, 48)
img = font.render(text, True, RED)
rect = img.get_rect()
rect.topleft = (20, 20)
cursor = Rect(rect.topright, (3, rect.height))
running = True
background = GRAY
while running:
for event in pygame.event.get():
if event.type == QUIT:
running = False
if event.type == KEYDOWN:
if event.key == K_BACKSPACE:
if len(text)>0:
text = text[:-1]
else:
text += event.unicode
img = font.render(text, True, RED)
rect.size=img.get_size()
cursor.topleft = rect.topright
screen.fill(background)
screen.blit(img, rect)
if time.time() % 1 > 0.5:
pygame.draw.rect(screen, RED, cursor)
pygame.display.update()
pygame.quit()
请向我们显示您用于检测用户按下“1”的代码:编辑问题,将代码粘贴到其中,选择粘贴的代码并单击编辑器上方的“代码”按钮(
{}
)。这将把它转换成“代码”。考虑用英语编写代码(包括注释)。我理解输出是否为您的母语,但这些评论仅供您(和我们)参考,并且应该可以跨地域转移。。我不会说切赫语/波兰语,所以我一看就感到困惑:)除此之外,在你3:d编程日写这篇文章真是太好了。@Torxed:)是的,我当然会这么做。当我第一次写它们的时候,我想我将是世界上唯一一个阅读它们的人。我想我会设法用Myslef做这个节目。我错了。如果您有任何关于python和pygame的提示或想法,我应该学习什么,请告诉我。谢谢@哈努克与Pygame | Pyglet | wxPython和Python合作多年,因此我将尽我所能提供帮助,但对于这个特殊问题,我认为Bartlomiej已经解决了您的问题else:self.text+=chr(event.key)
可以