2013-07-24 97 views
-1

我很困惑爲什麼這段代碼無法在窗口中產生任何東西。標籤,文本條目和按鈕都是在課程中創建的。他們的主框架是通過init傳遞的根。我知道這是一個超級微不足道的問題,但它與我正在閱讀的書中的內容非常相似,但是這本書已經14歲了。任何人都可以向我解釋我忽略了什麼?tkinter窗口什麼都沒有出現

from tkinter import * 
import hashlib 

class Login: 

    def __init__(self, master): 

     ##Set frame as root window 
     frame = Frame(master) 
     frame.pack() 

     Label(top, text="Username").pack() 

     ##Enter Username 
     self.username = Entry(frame) 
     self.username.pack() 
     self.username.set_focus() #keyboard entry starts here 

     Label(top, text="Password").pack() 

     ##Enter Password 
     self.password = Entry(frame) 
     self.password.pack() 

     ##Login 
     self.login = Button(frame, text="Login", width=10) 
     self.login.pack() 

def main(): 
    root = Tk() 
    root.geometry("400X400+300+300") 
    app = Login(root) 
    root.mainloop() 

main() 
+0

什麼是標籤(top,text =「Username」)。pack()'中的「top」。你在這裏錯過了一些代碼嗎? – Fredrik

+0

這應該是「框架」。我換了它,但沒有什麼區別,沒有出現在窗口中。 – pandeee

回答

1

所以我測試了這條巨蟒2之下,不得不修復四件事情:

  1. 變化tkinterTkinter(Python 3種的用途tkinter,不過,我想這就是你正在使用的)
  2. 修復幾何字符串(使用小寫x)以避免TclError: bad geometry specifier
  3. top更改爲frame,以避免NameError
  4. set_focus更改爲focus_set,以避免AttributeError

隨着這些更改的到位,腳本按預期工作。

(我剛剛確認,它的作品的Python 3下爲好,如果我跳過第一個變化)

你在某些IDE,這並不表明你的異常運行呢?

+0

我有兩個意外開啓的實例。 「頂」是原因。我曾經假設,如果窗口出現了,那麼沒有發生錯誤,但是在我發佈之後,我注意到了語法錯誤。 – pandeee

0

您在創建類的實例但在類的頂部時使用了根;

這裏是我做過什麼,它的工作:

from Tkinter import * 
import hashlib 

class Login: 

    def __init__(self, master): 

     ##Set frame as root window 
     frame = Frame(master) 
     frame.pack() 


     Label(frame, text="Username").pack() 

     ##Enter Username 
     self.username = Entry(frame) 
     self.username.pack() 


     Label(frame, text="Password").pack() 

     ##Enter Password 
     self.password = Entry(frame) 
     self.password.pack() 

     ##Login 
     self.login = Button(frame, text="Login", width=10) 
     self.login.pack() 

def main(): 
    root = Tk() 

    app = Login(root) 
    root.mainloop() 

main() 
+0

感謝您的幫助 – pandeee