【问题标题】:Keysym for tkinter not working ("Enter" and "Escape")tkinter 的 Keysym 不起作用(“Enter”和“Escape”)
【发布时间】:2017-01-31 14:35:19
【问题描述】:

对于“Enter”和“Escape”,我在 tkinter 上的 kysym 越来越差。 enter 的想法是当用户按下 enter 时,它会在 python 程序中创建一个新行,当用户按下 escape 时,它​​会关闭程序我的代码是否搞砸了?

这是错误:

Traceback (most recent call last):
  File "C:\Users\User\Desktop\python\turtle\helloworld.py", line 166, in <module>
    onkey(bye, "KP_Escape")
  File "<string>", line 1, in onkey
  File "C:\Python32\lib\turtle.py", line 1393, in onkey
    self._onkeyrelease(fun, key)
  File "C:\Python32\lib\turtle.py", line 687, in _onkeyrelease
    self.cv.bind("<KeyRelease-%s>" % key, eventfun)
  File "C:\Python32\lib\turtle.py", line 416, in bind
    self._canvas.bind(*args, **kwargs)
  File "C:\Python32\lib\tkinter\__init__.py", line 977, in bind
    return self._bind(('bind', self._w), sequence, func, add)
  File "C:\Python32\lib\tkinter\__init__.py", line 932, in _bind
    self.tk.call(what + (sequence, cmd))
_tkinter.TclError: bad event type or keysym "KP_Escape"

这是我的代码:

from turtle import *

speed(10)

# function variables
space_width = int(input("What do you want the space width to be from 1 - 100: "))
letter_height = 50
letter_width = 30
pen_color = input("What color do you want: ")
pen_width = input("What number width doyou want from 1-10: ")


def move_turtle():
    # Go to location for H
    penup ()
    goto(-200, 100)
    pendown()

def move_space():
    penup()
    forward(space_width)
    pendown()

def draw_H():
    # Draw H
    left(90)
    forward(letter_height)
    forward(-letter_height/2)
    right(90)
    forward(letter_height/2)
    left(90)
    forward(letter_height/2)
    forward(-letter_height)
    right(90)
    move_space()



def draw_E():
    # Draw E
    left(90)
    forward(letter_height)

    right(90)
    forward(letter_width)
    forward(-letter_width)

    right(90)
    forward(letter_height / 2)
    left(90)
    forward(letter_width)
    forward(-letter_width)

    right(90)
    forward(letter_height / 2)
    left(90)
    forward(letter_width)
    move_space()

def draw_L():
    # Draw L
    left(90)
    forward(letter_height)
    forward(-letter_height)

    right(90)
    forward(letter_width)
    move_space()

def draw_L2():
    # Draw L
    left(90)
    forward(100)
    forward(-100)

    right(90)
    forward(50)

def draw_O():
    # Draw O
    forward(letter_width)
    left(90)
    forward(letter_height)
    left(90)
    forward(letter_width)
    left(90)
    forward(letter_height)
    left(90)
    forward(letter_width)
    move_space()

def draw_newline():
    # this function will pick up the turtle and move it to a second line
    penup()
    goto(-200, ycor() -100)
    pendown()
def draw_W():
    # We will now draw the W
    right(-90)
    forward(letter_height)
    backward(letter_height)
    left(-90)
    forward(letter_width/2)
    right(-90)
    forward(letter_height)
    backward(letter_height)
    left(-90)
    forward(letter_width/2)
    right(-90)
    forward(letter_height)
    backward(letter_height)
    left(-90)
    move_space()

def draw_R():
    # We will now draw R
    left(90)
    forward(letter_height)
    right(90)
    forward(letter_width/2)
    right(90)
    forward(letter_width/2)
    right(90)
    forward(letter_width/2)
    left(140)
    forward(letter_height)
    left(40)
    move_space()
def HELLO():
    color(pen_color)
    width(pen_width)
    move_turtle()
    draw_H()
    draw_E()
    draw_L()
    draw_L()
    draw_O()

def WORLD():
    draw_newline()
    draw_W()
    draw_O()
    draw_R()
    draw_L()
    draw_O()

#for i in range(10):
#    HELLO()
#    WORLD()
#    width(i)
#    right(i)

move_turtle()

color(pen_color)

listen()

onkey(draw_H, "h")
onkey(draw_E, "e")
onkey(draw_L, "l")
onkey(draw_O, "o")
onkey(draw_W, "w")
onkey(draw_R, "r")
onkey(draw_newline, "KP_Enter")
onkey(bye, "KP_Escape")

exitonclick()

【问题讨论】:

    标签: python python-3.x events turtle-graphics


    【解决方案1】:

    代替:

    onkey(draw_newline, "KP_Enter")
    onkey(bye, "KP_Escape")
    

    做:

    onkey(draw_newline, "Return")
    onkey(bye, "Escape")
    

    案件很重要。 Turtle 会在将它们发送到 tkinter 之前将这些键名包装在适当的 Tk 语法中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-04-29
      • 2010-12-08
      • 2013-06-09
      • 2017-08-18
      • 2018-04-26
      相关资源
      最近更新 更多