3
我已經使用Python中的turtle創建了一個簡單的按鈕程序。 它很可能非常草率,但在IDLE中完美運行。但是,當試圖在沒有IDLE的情況下加載它時,只需繪製兩個按鈕然後退出程序。我仔細查看了代碼,找不到原因。Python龜程序在IDLE中不起作用
此處,我認爲這個問題是(最後幾行):
def main():
onscreenclick(Button.clicked,1)
main()
但是我不能完全肯定。這是完整的程序以防萬一。
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()
我希望有一個解決方案。
乾杯。
請添加您的代碼,而不是一些Web服務,並提供[MCVE(https://stackoverflow.com/help/mcve) – albert
我強烈建議你停止你唱'從烏龜進口*',而不是'導入烏龜',並通過'turtle.penup()'等使用函數。現在可能會感到愚蠢的反覆寫同樣的事情到處都是,但你的未來自我會感謝你。導入很多像這樣的短名稱會很快變得非常混亂。 –