如何用tkin在游戏类中制作按钮

2024-06-02 07:45:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用tkinter在一个类中制作一个按钮,但是按钮没有出现。剩下的比赛没问题。我只是当我试图在游戏类中添加一个退出按钮时,它没有出现。我使用的是python3.4.3。我在做一个游戏,你用潜水艇吹泡泡。我尝试过self.button_quit = tkinter.Button(window, text="Quit"),这是类代码:

class Game():
    height = 500
    width = 800
    mid_x = width / 2
    mid_y = height / 2
    bonus_score = 700
    bubble_chance = 10
    gap = 100
    time_limit = 30
    speed = 0.01

    def __init__(self):
        self.score = 0
        self.bonus = 0
        self.window = tkinter.Tk()
        self.window.title('Bubble Blaster')
        self.canvas = tkinter.Canvas(self.window, width=self.width,
                height=self.height, bg='darkblue')
        self.end = time.time() + self.time_limit
        Text(self.canvas,50,30,'TIME')
        Text(self.canvas,150,30,'SCORE')
        self.gui_score = Text(self.canvas,150,50)
        self.gui_time = Text(self.canvas,50,50)
        self.canvas.pack()
        self.bubbles = list()
        self.ship = Ship(self.canvas)
        self.ship.move(self.mid_x, self.mid_y)

    def coords_of(cid):
        pos = c.coords(cid)
        x = (pos[0] + pos[2]) / 2
        y = (pos[1] + pos[3]) / 2
        return x, y

    def create_bubble(self):
        x = self.width + self.gap
        y = random.randint(0,self.height)
        self.bubbles.append(Bubble(self.canvas,x,y))

    def move_bubbles(self):
        for bubble in self.bubbles:
            bubble.move(-bubble.speed,0)

    def destroy_bubble(self,bubble):
        self.bubbles.remove(bubble)
        bubble.destroy()

    def clean_up_bubbles(self):
        for bubble in self.bubbles:
            if bubble.x < -self.gap:
                self.destroy_bubble(bubble)
    def buttons(self):
        self.button1 = tkinter.Button(window, text="Quit")
        self.button1.tkinter.pack()
    def run(self):
        while time.time() < self.end:
            if random.randint(1, self.bubble_chance) == 1:
                self.create_bubble()
            self.move_bubbles()
            self.clean_up_bubbles()
            self.score += self.ship_bubble_collision()
            if (int(self.score / self.bonus_score)) > self.bonus:
                self.bonus += 1
                self.end += self.time_limit
            self.time_left = int(self.end - time.time())
            self.update_gui()
            self.window.update()
            self.ship.step()
            time.sleep(self.speed)
        Text(self.canvas,self.mid_x, self.mid_y,'GAME OVER',
                font=('Helvetica',30))
        Text(self.canvas,self.mid_x, self.mid_y + 30,
                'Score ' + str(self.score))
        Text(self.canvas,self.mid_x, self.mid_y + 45,'Bonus Time ' + 
                str(self.bonus * self.time_limit))
        input()

    def distance(self,x1,y1,x2,y2):
        return math.sqrt((x2-x1)**2+(y2-y1)**2)

    def ship_bubble_collision(self):
        points = 0
        for bubble in self.bubbles:
            distance = self.distance(self.ship.x,self.ship.y,\
                    bubble.x,bubble.y)
            boundary = self.ship.radius + bubble.radius
            if distance < boundary:
                points += bubble.radius + bubble.speed
                self.destroy_bubble(bubble)
        return points

    def update_gui(self):
        self.gui_score.update(str(self.score))
        self.gui_time.update(str(self.time_left))

if __name__ == '__main__':
    Game().run()

Tags: textselftimetkinterdefguiwindowcanvas
1条回答
网友
1楼 · 发布于 2024-06-02 07:45:01

添加

buttons()

在你需要它的地方。按钮不被调用就不能出现! 如果需要有关def的详细信息,请单击here。在

另外,对于将来的问题,请详细说明您的问题。很难说清楚你在问什么。在

相关问题 更多 >