Изменение переменной с помощью ключей в Python

#python #turtle-graphics #python-turtle

#python #графика черепахи #python-turtle

Вопрос:

Этот код, который я написал, просто уничтожает весь проект (со строки 15 по строку 22). Я пробовал другое форматирование, но ничего не работает. Вот мой код:

 import turtle
from turtle import Turtle, Screen

screen = Screen()  
PenWidth=input("Enter your Penwidth, you can later adjust it with k and l")
jack = Turtle("turtle")
jack.color("red", "green")
jack.pensize(PenWidth)
jack.speed(0)

def up():
    jack.setheading(90)
    jack.forward(100)
def Pensmaller():
    global PenWidth
    PenWidth=-2
    jack.pensize(PenWidth)
def Penbigger():
    global PenWidth
    PenWidth= 2
    jack.pensize(PenWidth)


turtle.listen()

turtle.onkey(up,"Up")

turtle.onkey(Pensmaller, "k")
turtle.onkey(Penbigger, "l")

screen.mainloop()`
 

Комментарии:

1. С чем именно у вас возникли проблемы? Это ошибка?

2. Боюсь, вам нужно быть более информативным. Сообщите нам, какую именно ошибку вы получаете, покажите нам свои журналы ошибок и т. Д.

3. Для первой функции добавьте Jack в качестве параметра или сделайте его глобальным

4. @IsmailHafeez Это вообще не имеет значения.

5. @IsmailHafeez СанджаЙсуреш прав

Ответ №1:

Вы ввели операторы в неправильном порядке. Вы должны изменить функции Pensmaller and Penbigger следующим образом:

 def Pensmaller():
    global PenWidth
    PenWidth -= 2
    jack.pensize(PenWidth)

def Penbigger():
    global PenWidth
    PenWidth  = 2
    jack.pensize(PenWidth)
 

В вашем исходном коде вы использовали PenWidth= 2 , который устанавливает PenWidth значение 2 . Чтобы добавить к числу, знак плюс должен стоять перед знаком равенства, например = , вместо = . То же самое, с =- помощью которого должно быть -= вычтено из числа. Кроме того, чтобы избежать ошибки типа и иметь возможность добавлять к ней / вычитать из нее, преобразуйте PenSize в начале в int, например:

 PenWidth = int(input("Enter your Penwidth, you can later adjust it with k and l"))
 

Комментарии:

1. Ваше решение не работает. Вот сообщение об ошибке, которое я получаю каждый раз, когда нажимаю клавишу (в данном случае k): Исключение в трассировке обратного вызова Tkinter (последний последний вызов): File «/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/tkinter/__init__.py «, строка 1884, в файле call return self.func(*args) «/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/turtle.py «, строка 687,в файле eventfun fun() «/Users/gian/Desktop/TigerJython/Paint.py «, строка 67, в Pensmaller PenWidth -= 2 Ошибка типа: неподдерживаемые типы операндов для -=: ‘str’ и ‘int’

2. @Zwiebelgian я отредактировал свой ответ с исправлением для этого, теперь должно сработать