如何在 python 海龟中将文本制作成按钮?

2023-12-13

我想将“CAT”一词制作成一个按钮,因此当单击它时,它会显示“CAT”。另外,当我想要的按钮不是按钮时,它应该位于单词现在所在的位置。需要提供任何帮助。谢谢

我已经尝试过 tkinter 模块,但问题是它使用按钮打开一个单独的窗口。我想要的是主屏幕上的一个按钮。

import turtle
screen = turtle.Screen()

# this assures that the size of the screen will always be 400x400 ...
screen.setup(800,800)
turtle.ht()
turtle.penup()
turtle.goto (50, 200)
turtle.color("black")
turtle.write("CAT", move=False, align="center", font=("Times New Roman", 120, "bold"))
screen.bgpic("background.gif")
turtle.st()
turtle.forward(145)
turtle.left(90)
turtle.forward(10)
turtle.pendown()
turtle.forward(110)
turtle.left(90)
turtle.forward(287)
turtle.left(90)
turtle.forward(110)
turtle.left(90)
turtle.forward(287)
turtle.ht()

我希望输出是屏幕顶部的一个巨大按钮(黑色),上面写着“CAT”。当按下该按钮时,我希望它大声说“猫”。现在顶部只有文字“CAT”。我想用一个表示相同内容的按钮替换该文本。如果我在屏幕上使用单击,我希望单击位于特定坐标中。我该怎么做呢。 谢谢你!


我们可以利用turtle面向对象的特性来定义我们自己的可重用按钮类来生成多个按钮:

from turtle import Screen, Turtle

class Button(Turtle):
    FONT_NAME, FONT_SIZE, FONT_TYPE = 'Arial', 18, 'normal'

    HORIZONTAL_PAD, VERTICAL_PAD = 1.05, 1.15

    def __init__(self, text, position, command=None):
        super().__init__(visible=False)
        self.speed('fastest')
        self.penup()

        self.text = text
        self.position = position
        self.command = command

        self.width, self.height = self.drawButton()

    def drawButton(self):
        x, y = self.position
        self.setposition(x, y - self.FONT_SIZE/2)
        button_font = (self.FONT_NAME, self.FONT_SIZE, self.FONT_TYPE)
        self.write(self.text, align='center', move=True, font=button_font)

        width = 2 * (self.xcor() - x) * self.HORIZONTAL_PAD
        height = self.FONT_SIZE * self.VERTICAL_PAD

        self.setposition(x - width/2, y - height/2)
        self.pendown()

        for _ in range(2):
            self.forward(width)
            self.left(90)
            self.forward(height)
            self.left(90)

        self.penup()

        return width, height

    def clickButton(self, x, y):
        c_x, c_y = self.position
        half_w, half_h = self.width/2, self.height/2

        if c_x - half_w < x < c_x + half_w and c_y - half_h < y < c_y + half_h:
            (self.command)(x, y)

screen = Screen()

cyan = Button("Cyan Background", (100, 100), lambda x, y: screen.bgcolor('cyan'))

screen.onclick(cyan.clickButton, add=True)

yellow = Button("Yellow Background", (-100, -100), lambda x, y: screen.bgcolor('yellow'))

screen.onclick(yellow.clickButton, add=True)

screen.mainloop()

根据您的需要进行装饰。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 python 海龟中将文本制作成按钮? 的相关文章

随机推荐