Ich habe ein einfaches Button-Programm mit Turtle in Python erstellt. Es ist sehr wahrscheinlich sehr schlampig, aber funktioniert perfekt in IDLE. Wenn Sie jedoch versuchen, es ohne IDLE zu laden, zeichnet es nur die zwei Schaltflächen und beendet dann das Programm. Ich habe ohne Erfolg über den Code nach der Ursache gesucht.Python Turtle-Programm funktioniert in IDLE nicht
Hier ist, wo ich denke, das Problem ist (die letzten paar Zeilen):
def main():
onscreenclick(Button.clicked,1)
main()
Allerdings bin ich nicht ganz sicher. Hier ist das volle Programm nur für den Fall.
from turtle import *
bgcolor('skyblue')
penup()
left(90)
speed(0)
hideturtle()
buttonlist = []
class Button:
x_click = 0
y_click = 0
def __init__(self, x, y, size, color, text, fontsize, fixvalue):
self.x = x
self.y = y
self.size = size
self.color = color
self.text = text
self.fontsize = fontsize
self.fixvalue = fixvalue
def showButton(self):
goto(self.x , self.y)
pendown()
fillcolor(self.color)
begin_fill()
for i in range(4):
forward(self.size)
right(90)
end_fill()
penup()
goto((self.x+self.size/2),self.y+self.fixvalue)
right(90)
write(self.text, move=False, align="center", font=("Arial", self.fontsize, "normal"))
left(90)
def hideButton(self):
goto(self.x, self.y)
fillcolor('skyblue')
pencolor('skyblue')
pendown()
begin_fill()
for i in range(4):
forward(self.size)
right(90)
end_fill()
penup()
pencolor('black')
def checkClick(self):
if self.x < Button.x_click:
if Button.x_click < (self.x+self.size):
if self.y < Button.y_click:
if Button.y_click < (self.y+self.size):
return 1
def clicked(x, y):
Button.x_click = x
Button.y_click = y
if home_1.checkClick() == 1:
home_1.hideButton()
if home_2.checkClick() == 1:
home_2.hideButton()
home_1 = Button(10,10,100,'red','←',45,20)
home_2 = Button(-50,-50,50,'blue','Hello!',10,15)
Button.showButton(home_1)
Button.showButton(home_2)
def main():
onscreenclick(Button.clicked,1)
main()
Ich hoffe, es gibt eine Lösung.
Prost.
Bitte fügen Sie Ihren Code, um einen Codeblock anstelle eines Links zu einem gewissen Web-Service und bieten eine [MCVE] (https://stackoverflow.com/help/mcve) unter Verwendung von – albert
Ich empfehle Ihnen dringend, Sie zu stoppen singe den 'from turtle import *' und stattdessen tue einfach 'import turtle' und nutze die Funktionen über' turtle.penup() 'etc. Es könnte sich jetzt blöd anfühlen, überall und immer wieder dasselbe zu schreiben, aber dein zukünftiges Selbst werde ich dir danken. So viele kurze Namen zu importieren wird sehr schnell sehr verwirrend. –