使用Python在Tkinter中放置对话框
我正在用python制作一个tkinter gui,但这并不合适,当我点击Activate时,它会打开一个新的框,提示用户输入用户名和密码,但有一些错误;我已经定义了下面的问题使用Python在Tkinter中放置对话框,python,tkinter,tkinter-canvas,Python,Tkinter,Tkinter Canvas,我正在用python制作一个tkinter gui,但这并不合适,当我点击Activate时,它会打开一个新的框,提示用户输入用户名和密码,但有一些错误;我已经定义了下面的问题 以下是我正在使用的代码: import Tkinter import tkMessageBox from ttk import * from Tkinter import * root = Tk() top = Tk() def helloCallBack(): top.title("Activation") L
以下是我正在使用的代码:
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.当我单击“激活”时,第一个消息框(根)没有被删除。您的主要错误是代码中有两个主循环(您试图运行两个单独的程序)。使用
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()
此外,该网站是非常推荐给你
以及一些链接:
(以及如何从中获取字符串,我认为这是您的下一步)您的主要错误是代码中有两个主循环(您试图运行两个单独的程序)。使用
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()
此外,该网站是非常推荐给你
以及一些链接:
(以及如何从中获取字符串,我想这是你的下一步)@Lafexlos,我同意你的观点,谢谢你的补充!这是真的,还有更多建议使用类结构(smth-like构建自己的
类应用程序(tk.tk)
)和方法和属性来存储这些变量。但我假设OP是python/tkinter的新手,这个信息对他来说太复杂了(或者太直截了当了,所以这里没有自己的研究空间,只是复制/过去)。我只是抓起OP的代码,用它做了他想要的。谢谢;),是的,我是Tkinter的Python新手,所以在学习过程中。@Lafexlos,我同意你的观点,谢谢你的补充!这是真的,还有更多建议使用类结构(smth-like构建自己的类应用程序(tk.tk)
)和方法和属性来存储这些变量。但我假设OP是python/tkinter的新手,这个信息对他来说太复杂了(或者太直截了当了,所以这里没有自己的研究空间,只是复制/过去)。我只是抓起OP的代码,用它做了他想要的。谢谢;),是的,我是Tkinter的Python新手,所以正在学习过程中。