如何在Toplevel窗口中创建输入输入



我有问题,无法绕过它。如何在使用python中使用tkinter按下按钮时创建一个子窗口,例如:

import tkinter
root = Tk()
Button(root, text='Bring up Message', command=Window).pack()
root.mainloop()
def messageWindow():
win = Toplevel()
-------->calculate------
Label(win, text=message).pack()
Button(win, text='OK', command=win.destroy).pack()

,在消息窗口上,我想有两个条目字段,如果我可以输入A和B,然后它应该计算A B并给我结果。

谢谢。

首先,您应该使用 from tkinter import *,因为在脚本中使用的模块类之前没有tkinter.

另外,您的"携带消息"按钮是否应该调用messageWindow()函数?目前,它正在调用一个未定义的函数Window。如果是这样,您应该更改Button's命令,然后将messageWindow()函数移到创建按钮的行之上,否则将在定义并生成错误之前调用该函数。

tkinter中 Entry小部件的语法如下:

entry = Entry(root, *options)
entry.pack()

定义它后,您需要pack()条目小部件。如果您在与定义的同一行上pack(),您将无法检索其中的输入,因为它将成为NoneType对象。

您将至少需要两个Entry小部件,一个要输入输入a,一个要输入输入b

您还可以添加第三个Entry来打印ab的总和,尽管您可以使用标签或将其打印到控制台上。

entry_a = Entry(win)
entry_a.pack()
entry_b = Entry(win)
entry_b.pack()
# Optional answer entry
entry_ans = Entry(win)
entry_ans.pack()
然后,您应该创建一个函数(仍在messageWindow()功能中(,该函数将从两个条目中检索输入并添加它们,以及另一个Button来调用该函数。我以试验形式进行了一些其他错误检查,以期在条目是空白或包含整数以外的其他内容时: :
def add():
    try:
        a = int(entry_a.get())
        b = int(entry_b.get())
        ab_sum = a + b
        # Optional printing to answer entry
        entry_ans.delete(0, 'end')
        entry_ans.insert(0, ab_sum)
    except:
        pass      
Button(win, text="Add", command=add).pack()

"如何在toplevel窗口中创建输入输入"

import tkinter as tk
...
toplevel = tk.Toplevel(...)
tk.Entry(toplevel)

"如何在按下按钮时创建子窗口..."

import tkinter as tk
...
def create_child_window(widget):
    tk.Toplevel(widget)
...
root = tk.Tk()
tk.Button(root, command=lambda w = root: create_child_window(w))

最新更新