2014-02-10 36 views
0

我用tkinter函數來創建一個新的窗口,它工作正常。
當我從這個窗口鏈接到另一個窗口時,該按鈕移動到第一個窗口。我不明白它爲什麼會移動。爲什麼按鈕移動到當前窗口?

這是第一個窗口中的代碼,

import tkinter 
    window = tkinter.Tk() 
    window.title ("Login") 
    window.geometry ("300x150") 
    username = "Gurdip" 
    password = "1234" 
    def login(): 
     if txtUser.get() == username and txtPass.get() == password: 
     import NewWindow 
    lblUser = tkinter.Label(window, text="Username:") 
    lblUser.pack() 
    txtUser = tkinter.Entry(window) 
    txtUser.pack() 
    lblPass = tkinter.Label(window, text="Password:") 
    lblPass.pack() 
    txtPass = tkinter.Entry(window) 
    txtPass.pack() 
    btnenter = tkinter.Button(window, text="Enter", command=login) 
    btnenter.pack() 

而對於第二個窗口

import tkinter 
    window = tkinter.Tk() 
    window.title ("The Royal Liberty School") 
    window.geometry ("300x150") 
    def webpage(): 
     import webbrowser 
     webbrowser.open("http://www.royalliberty.org.uk/") 
    lblRlib = tkinter.Label(window, text="Welcome to the Royal Liberty School\n\nClick the link to go to our website") 
    lblRlib.pack() 
    def button(): 
     webbutton = tkinter.Button(text ="Royal Liberty School", command = webpage) 
     webbutton.pack() 
    button() 
+0

你的問題就沒有意義了。按鈕通常不會「移動」。你是說按鈕實際上是從一個窗口移動到另一個窗口?另外,這兩個獨立的tkinter程序,還是將所有這些代碼合併爲一個程序? –

回答

0

我的猜測是,你要舉報「皇家自由學校」按鈕錯誤的窗口上出現,而不是實際移動。我從未聽說過之前有過按鈕。

如果猜測是正確的,這可能是因爲你沒有給它一個明確的父母,所以它的默認爲根窗口。

如果所有的代碼屬於一個程序,你有另外一個問題。您應該始終只創建一個Tk的單個實例。如果您需要多個窗口,請創建Toplevel的實例。

0

你被名窗口呼叫兩者。這意味着屏幕上有兩個窗口都被名稱窗口占用。這是更傳統使用的Tkinter的Toplevel爲如下

NewWindow = Toplevel(window) 

然後,你要放在這個NewWindow,只是用它在窗口

MyButton = Button(NewWindow, text=hi) 

至於對方的回答說的地方的任何物品,在一個程序中必須使用Tk()是不正確的,因此您必須使用Toplevel。

相關問題