【问题标题】:Why can't I change the width of my turtle?为什么我不能改变我的乌龟的宽度?
【发布时间】:2020-09-14 18:44:28
【问题描述】:

我正在 Tkinter 和 turtle 中制作一个应用程序,我想通过数字按键来更改我的 turtle 的宽度。因此,当我输入 2 时,它应该将用户宽度更改为 2,当我输入 1 时,它应该将宽度更改为 1。但是,当我按下键上的数字时,它不起作用?

这里是示例代码:

from tkinter import *
from tkinter import filedialog
import turtle
import time


# Screen
screen = Tk()
screen.geometry("{0}x{1}+0+0".format(screen.winfo_screenwidth(), screen.winfo_screenheight()))
screen.title("Example Code")
screen.configure(bg="Gray")
# Canvas
canvas = Canvas(master=screen, width="666", height="666")
canvas.place(relx=0.5, rely=0.5, anchor=CENTER)


# Making The User
user = turtle.RawTurtle(canvas)
user.shape("triangle")
user.setheading(90)
user.speed(0)
user.color("black")
user.down()
user.goto(0, 0)
userspeed = 15
user.width(1)


# Width Functions
def width_one(event=None):
    user.width(1)


def width_two(event=None):
    user.width(2)

canvas.focus_set()
canvas.bind('<1>', width_one)
canvas.bind('<2>', width_two)




screen.mainloop()

【问题讨论】:

  • 您正在绑定到鼠标按钮 1 和 2 的点击,not 键。使用'1''2' 作为数字键。
  • 我正在尝试绑定数字键 1 & 2

标签: python tkinter tkinter-canvas python-turtle


【解决方案1】:

好的,问题似乎出在函数上,“它在初始状态下没有任何变化”,而且键绑定错误'&lt;1&gt;''&lt;2&gt;',从某种意义上说是错误的,这不是您缩进的内容,因为它指的是鼠标按钮 1 和 2,而不是数字键 1 和 2。要将其绑定到数字键 1 和 2,它应该是:

canvas.focus_set()
canvas.bind('1', width_one)
canvas.bind('2', width_two)

由于该函数在初始阶段没有显示任何更改,因此不会进行任何更改,测试一下,比如说:

# Completed Version
canvas.focus_set()
canvas.bind('1', lambda event:print('You pressed 1'))
canvas.bind('2', lambda event:print('You pressed 2'))

当您分别按 1 和 时,您会注意到终端中打印了 1 和 2

希望这能解决问题,如果有任何错误,请告诉我。

干杯

【讨论】:

  • @Skcoder 我没有用过海龟,所以我不知道你想做什么以及为什么它错了。
  • @Skcoder 实际上功能起作用了,width() 改变了线条的宽度,对吧?无需绘制任何线条,您可以确保它,当您向前移动箭头并且线条延伸时,它会显示更新后的粗细
  • IDE 不是那么简单,我自己接手了一个项目,半途而废,导致语法标记,这一切都不容易,它的模块没有很好的文档记录,但作为您将使用的基本代码tkinter Text 小部件和 exec() 执行其中编写的代码。毕竟python IDLE是由tkinter制作的,我相信
猜你喜欢
  • 2011-03-16
  • 1970-01-01
  • 2020-08-11
  • 2021-11-09
  • 2016-02-18
  • 2012-03-03
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多