用Python在Tkinter中放置对话框

2024-04-25 17:01:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python制作一个tkinter gui,但这并不合适,当我单击Activate时,它应该会打开一个新的框,提示用户输入用户名和Pass,但是有一些错误;我定义了下面的问题
以下是我使用的代码:

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()

所以我得到的输出是;

当我点击激活: pic2

这里有两个问题
1.当我运行程序时,根框后面有一个空白框,我该如何消除它?
2.单击“激活”时,第一个消息框(根)不会被删除


Tags: textfromimporttkintertopcolumnpassroot
1条回答
网友
1楼 · 发布于 2024-04-25 17:01:08

您的主要错误是代码中有两个主循环(您试图运行两个独立的程序)。使用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()

另外,this网站非常推荐给你!在

还有一些链接:

Toplevel widget

Entry widget(以及如何从中获取字符串,我认为这是您的下一步)

相关问题 更多 >