我有一个问题,无法理解它。如何在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并给我结果。
谢谢。
答案 0 :(得分:0)
首先,您应该使用from tkinter import *
,因为在您的脚本中使用的模块类之前没有tkinter.
。
另外,您的“Bring up Message”按钮是否应该调用messageWindow()
功能?现在它正在调用一个未定义的函数Window
。如果是这样,您应该更改Button's
命令并将messageWindow()
函数移到创建按钮的行上方,否则它将在定义函数之前调用该函数并生成错误。
Tkinter中Entry
小部件的语法如下:
entry = Entry(root, *options)
entry.pack()
定义后,您需要pack()
条目窗口小部件。如果您pack()
它在您定义的同一行上,它将无法检索其中的输入,因为它将成为NoneType
对象。
您需要至少两个Entry
小部件,一个用于输入输入a
,另一个用于输入输入b
。
您还可以添加第三个Entry
来打印a
和b
之和的结果,但您可以使用标签或只将其打印到控制台。< / p>
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
来调用该函数。我以try的形式实现了一些额外的错误检查 - 除了当条目为空或包含除整数之外的其他内容时:
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()
答案 1 :(得分:0)
“如何在顶层窗口中创建条目输入”
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))