2017-08-29 52 views
-1

我有一段代碼,一個餅乾裏面唱首歌,但是當我試圖把它在一個類中這是行不通的,給我這個錯誤如何使一個按鈕,一類

Exception in Tkinter callback 
Traceback (most recent call last): 
    File "C:\Users\Travi\AppData\Local\Programs\Python\Python36- 
32\lib\tkinter\__init__.py", line 1699, in __call__ 
    return self.func(*args) 
TypeError: click() missing 1 required positional argument: 'self' 

我不明白爲什麼它不工作 我的代碼如下

from tkinter import* 
import os 
root = Tk() 
class Main(): 
    os.chdir('C:\\Users\\Travi\\Downloads') 
    cookies = 0 
    grandmas =0 
    gmaprice = 10 

    cookiesIcon = Label(root,text = "Cookies you have:"+str(cookies)) 
    cookiesIcon.grid(row = 1,column = 0) 
    gma = Label(root,text = "Grandmas you have:"+str(grandmas)) 
    gma.grid(row = 0, column = 1) 
    def click(self): 
     global cookies,cookiesIcon 
     cookies+=1 
     cookiesIcon.config(text = "Cookies you have:"+str(cookies)) 
    def grandma(self): 
     global cookies,grandmas,cookiesIcon,gma,gmaprice 
     if cookies>gmaprice: 
      grandmas+=1 
      cookies-=gmaprice 
      gmaprice+=5 
      cookies.config(text = "Cookies you have:"+str(cookies)) 
      gma.config(text = "Grandmas you have:"+str(grandmas)) 
    photo=PhotoImage(file = "Cookies.gif") 
    b = Button(root,command =click) 
    b.config(image=photo) 
    b.grid() 
    gmaupgrade=Button(root,command =grandma,text = "Grandmas for sale") 
    gmaupgrade.grid(column = 1, row = 1) 
    root.mainloop() 
+0

我想你應該更多地考慮在你嘗試在類中實現一個按鈕之前,類是如何工作的(使用'__init__'方法,引用'self'來代替'global'等變量管理')。 – SneakyTurtle

+0

'命令=​​ self.click' –

+0

偷偷摸摸的烏龜,我告訴你,這就是我正在試圖通過創建這個,而布賴恩,我試過了,但它給了我自己沒有定義的錯誤 – Travis

回答

0

正如在評論中提到,你首先必須獲得一個更好地瞭解如何班蟒蛇(和一般的)工作。

我已更正您的代碼中的一系列錯誤;即:
- 添加一個``函數來初始化類的屬性。
- 刪除了無用的global語句;所有的類屬性都可以在類中訪問。
- 糾正了一些變量被錯誤地使用了(cookies I/O cookiesIcongrandma I/O gma

from tkinter import* 
import os 
root = Tk() 

class Main(): 

    def __init__(self): 
#   os.chdir('C:\\Users\\Travi\\Downloads') 
     self.cookies = 0 
     self.grandmas =0 
     self.gmaprice = 10 

     self.cookiesIcon = Label(root,text = "Cookies you have:"+str(self.cookies)) 
     self.cookiesIcon.grid(row=1, column=0) 
     self.gma = Label(root,text = "Grandmas you have:"+str(self.grandmas)) 
     self.gma.grid(row = 0, column = 1) 

#  photo=PhotoImage(file = "Cookies.gif") 
     b = Button(root, command=self.click) 
#  b.config(image=photo) 
     b.grid() 

     self.gmaupgrade=Button(root,command=self.grandma, text = "Grandmas for sale") 
     self.gmaupgrade.grid(column = 1, row = 1) 
     root.mainloop() 

    def click(self): 
     self.cookies += 1 
     self.cookiesIcon.config(text = "Cookies you have:"+str(self.cookies)) 

    def grandma(self): 
     if self.cookies > self.gmaprice: 
      self.grandmas += 1 
      self.cookies -= self.gmaprice 
      self.gmaprice += 5 
      self.cookiesIcon.config(text="Cookies you have:" + str(self.cookies)) 
      self.gma.config(text="Grandmas you have:" + str(self.grandmas)) 


Main() 

我希望這給你的,你需要做的意識,並瞭解更多的慾望。

相關問題