[英]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.