Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyGame中的实时输入_Python_Text_Pygame - Fatal编程技术网

Python PyGame中的实时输入

Python PyGame中的实时输入,python,text,pygame,Python,Text,Pygame,我正在尝试编写一个小型的piggybank程序。我已经有了一个有一些背景和文本的窗口,但我需要为用户添加一个功能,让他向piggybank中添加钱。当用户按“1”时,他可以看到文本“您想添加多少?”这就是我的问题开始的地方。。。这是我编程的第三天,我甚至不知道我在找什么。我想实时显示用户输入的数量。有什么建议吗 这是我到目前为止的代码(我能理解:p) 下面是一个简短的例子: #creates a new string, that will store the character you have

我正在尝试编写一个小型的piggybank程序。我已经有了一个有一些背景和文本的窗口,但我需要为用户添加一个功能,让他向piggybank中添加钱。当用户按“1”时,他可以看到文本“您想添加多少?”这就是我的问题开始的地方。。。这是我编程的第三天,我甚至不知道我在找什么。我想实时显示用户输入的数量。有什么建议吗

这是我到目前为止的代码(我能理解:p)


下面是一个简短的例子:

#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)
可以