2015-09-12 44 views
0

我一直在嘗試使用tkinter在類中創建按鈕,但該按鈕沒有出現。遊戲的其餘部分都很好。我只是當我嘗試在遊戲類中添加一個退出按鈕時,它不會出現。我正在使用python 3.4.3。我正在製作一款遊戲,讓你用潛艇來泡泡。我曾嘗試self.button_quit = tkinter.Button(window, text="Quit"),這是類代碼:如何使用tkinter在遊戲類中創建按鈕

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() 
+0

你有什麼問題?它有什麼作用?你期望它做什麼不同? – Blckknght

+0

好吧,它不起作用的一個顯而易見的原因是你永遠不會調用包含按鈕創建代碼的'buttons'方法。我不確定何時需要按鈕出現,因此您必須決定該調用應該在哪裏(或者如果代碼應該移到其他地方,比如'__init__')。 – Blckknght

回答

0

添加

buttons()

在你需要它被調用。沒有被調用,按鈕不能出現! 如果您需要def的更多信息,請單擊here

對於未來的問題,請詳細說明您的問題。很難確切地說出你在問什麼。

相關問題