Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/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 如何使用turtle记录按键操作?_Python_Turtle Graphics_Coding Efficiency - Fatal编程技术网

Python 如何使用turtle记录按键操作?

Python 如何使用turtle记录按键操作?,python,turtle-graphics,coding-efficiency,Python,Turtle Graphics,Coding Efficiency,我正在尝试制作一个简单的海龟脚本,要求用户输入用户名,然后将其存储。我没有任何代码,但如果我使用onkeypress,似乎我必须创建一个函数,将每个可能的字符追加到username变量,这看起来不是很像python。有更好的方法吗 如果我使用onkeypress,似乎我必须为 将每个可能的字符追加到username变量, 这似乎不是很像蟒蛇。有更好的方法吗 是,但不是。如果您关闭海龟的onkeypress()函数的第二个参数key,它将在按下任何键时调用按键处理程序代码。问题是,他们省略了代码,

我正在尝试制作一个简单的海龟脚本,要求用户输入用户名,然后将其存储。我没有任何代码,但如果我使用onkeypress,似乎我必须创建一个函数,将每个可能的字符追加到username变量,这看起来不是很像python。有更好的方法吗

如果我使用onkeypress,似乎我必须为 将每个可能的字符追加到username变量, 这似乎不是很像蟒蛇。有更好的方法吗

是,但不是。如果您关闭海龟的
onkeypress()
函数的第二个参数
key
,它将在按下任何键时调用按键处理程序代码。问题是,他们省略了代码,让您知道是哪把钥匙

我们可以通过重写底层的
\onkeypress
代码来解决这个设计错误,在没有设置键的情况下(即
键为None
),将tkinter的
event.char
传递给turtle的事件处理程序

下面是一个粗略的例子,让您开始:

from turtle import Screen, Turtle
from functools import partial

FONT = ('Arial', 18, 'normal')

def _onkeypress(self, fun, key=None):
    if fun is None:
        if key is None:
            self.cv.unbind("<KeyPress>", None)
        else:
            self.cv.unbind("<KeyPress-%s>" % key, None)
    elif key is None:
        def eventfun(event):
            fun(event.char)
        self.cv.bind("<KeyPress>", eventfun)
    else:
        def eventfun(event):
            fun()
        self.cv.bind("<KeyPress-%s>" % key, eventfun)

def letter(character):
    turtle.write(character, move=True, font=FONT)

turtle = Turtle()

screen = Screen()
screen._onkeypress = partial(_onkeypress, screen)
screen.onkeypress(letter)
screen.listen()
screen.mainloop()
从海龟导入屏幕,海龟
从functools导入部分
字体=('Arial',18,'normal')
def_onkeypress(自我、乐趣、按键=无):
如果没有乐趣:
如果键为“无”:
self.cv.unbind(“,无)
其他:
self.cv.unbind(“%key,None”)
elif键为“无”:
def eventfun(事件):
乐趣(event.char)
self.cv.bind(“,eventfun)
其他:
def eventfun(事件):
乐趣
self.cv.bind(“%key,eventfun”)
def字母(字符):
write(字符,move=True,font=font)
海龟
screen=screen()
屏幕。_onkeypress=部分(_onkeypress,屏幕)
屏幕上的按键(字母)
screen.listen()
screen.mainloop()
只要开始在窗口中输入,您的字符就会显示出来。您需要自己处理特殊字符(例如返回)