[英]Dialog box Placement in Tkinter with Python
我正在用python制作tkinter gui,但是它不正確,當我單擊``激活''時,應該打開一個新框,提示用戶輸入用戶名和密碼,但是有一些錯誤;我在下面定義了問題
這是我正在使用的代碼:
import Tkinter
import tkMessageBox
from ttk import *
from Tkinter import *
root = Tk()
top = Tk()
def helloCallBack():
top.title("Activation")
Label(top, text="Username").grid(row=0, sticky=W, padx=4)
Entry(top).grid(row=0, column=1, sticky=E, pady=4)
Label(top, text="Pass").grid(row=1, sticky=W, padx=4)
Entry(top).grid(row=1, column=1, sticky=E, pady=4)
Button(top, text="Submit").grid(row=2, column=1)
B = Tkinter.Button(text ="Activate", command = helloCallBack)
B.pack()
root.mainloop()
top.mainloop()
所以我得到的輸出是;
當我點擊激活時:
這里有兩個問題
1.運行程序時,根目錄框后面有一個空白框,該如何消除?
2.當我單擊激活時,第一個消息框(根)不會被刪除
您的主要錯誤是代碼中的兩個mainloop(您試圖運行兩個單獨的程序)。 使用具有用戶名/密碼對的新框,使用Toplevel()
小部件而不是Tk()
的新實例,並使用destroy
方法將其關閉。
所以這是例子:
from Tkinter import *
def show_form():
root = Tk()
b = Button(text="Activate", command=lambda: show_call_back(root))
b.pack()
root.mainloop()
def show_call_back(parent):
top = Toplevel(parent)
top.title("Activation")
Label(top, text="Username").grid(row=0, sticky=W, padx=4)
Entry(top).grid(row=0, column=1, sticky=E, pady=4)
Label(top, text="Pass").grid(row=1, sticky=W, padx=4)
Entry(top).grid(row=1, column=1, sticky=E, pady=4)
Button(top, text="Submit", command=top.destroy).grid(row=2, column=1)
show_form()
另外, 這個網站非常適合您!
和一些鏈接:
Entry小部件 (以及如何從中獲取字符串,我認為這是您的下一步)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.