单击消息框的 "OK" 按钮后,辅助 window 会自动隐藏。你这是在掩饰吗?
The secondary window is automatically hidden after after clicking the "OK" button of the Messagebox. Are you doing to hide it?
使用 Tkinter 在辅助 window 中工作,当我单击 Messagebox 消息的“确定”按钮时(正确记录插入),辅助 window 消失并隐藏在底部的任务栏。所以马上点击Messagebox中的“OK”,我会发现自己自动上了主window。我没有收到错误
当我点击消息框的“确定”按钮时,如何不隐藏任务栏中的辅助window,然后留在辅助中?我应该在“插入”中写什么?
代码Windows主要:
window=Tk()
window.title("main")
window.attributes('-zoomed', True)
代码Windows中学
from aaa import bbb
def form_secondary():
root = tk.Toplevel()
root.title("secondary")
root.geometry("1920x1080+0+0")
root.config(bg="white")
root.state("normal")
启动 MessageBox 的函数
def insert():
if aaaa() == "" or bbbb.get() =="" or cccc.get() == "" or ddddd.get() == "" or eeee.get() == "" or fffff.get() == "":
messagebox.showerror("There is some empty field. Fill out all the fields")
return
db.insert(aaaa.get(), bbbb.get(), cccc.get(), ddddd.get(), eeee.get, fffff.get())
messagebox.showinfo("Record insert correctly ")
clearAll()
dispalyAll()
您可以通过使子 window 成为 transient [=37= 来使子 window 位于其父 window 之上] 父 window.
由于 window
(在主脚本中)和 root
(在另一个脚本中的 form_secondary()
内)windows 在不同的脚本中创建,您不能引用 window
直接在 form_secondary()
里面。其中一种方法是将 window
作为参数传递给 form_secondary()
:
def form_secondary(parent):
root = tk.Toplevel(parent)
root.title("secondary")
root.geometry("1920x1080+0+0")
root.config(bg="white")
root.state("normal")
# make this window a transient window
root.transient(parent)
然后在主脚本中调用form_secondary()
时将window
作为参数传递:
...
window=Tk()
window.title("main")
window.attributes('-zoomed', True)
...
# assume it is called inside a function
def some_func():
...
form_secondary(window)
...
...
更新:如果通过菜单项调用,则使用lambda
。
例如:
editmenu.add_command(label='Database', command=lambda: name.form_secondary(window))
使用 Tkinter 在辅助 window 中工作,当我单击 Messagebox 消息的“确定”按钮时(正确记录插入),辅助 window 消失并隐藏在底部的任务栏。所以马上点击Messagebox中的“OK”,我会发现自己自动上了主window。我没有收到错误
当我点击消息框的“确定”按钮时,如何不隐藏任务栏中的辅助window,然后留在辅助中?我应该在“插入”中写什么?
代码Windows主要:
window=Tk()
window.title("main")
window.attributes('-zoomed', True)
代码Windows中学
from aaa import bbb
def form_secondary():
root = tk.Toplevel()
root.title("secondary")
root.geometry("1920x1080+0+0")
root.config(bg="white")
root.state("normal")
启动 MessageBox 的函数
def insert():
if aaaa() == "" or bbbb.get() =="" or cccc.get() == "" or ddddd.get() == "" or eeee.get() == "" or fffff.get() == "":
messagebox.showerror("There is some empty field. Fill out all the fields")
return
db.insert(aaaa.get(), bbbb.get(), cccc.get(), ddddd.get(), eeee.get, fffff.get())
messagebox.showinfo("Record insert correctly ")
clearAll()
dispalyAll()
您可以通过使子 window 成为 transient [=37= 来使子 window 位于其父 window 之上] 父 window.
由于 window
(在主脚本中)和 root
(在另一个脚本中的 form_secondary()
内)windows 在不同的脚本中创建,您不能引用 window
直接在 form_secondary()
里面。其中一种方法是将 window
作为参数传递给 form_secondary()
:
def form_secondary(parent):
root = tk.Toplevel(parent)
root.title("secondary")
root.geometry("1920x1080+0+0")
root.config(bg="white")
root.state("normal")
# make this window a transient window
root.transient(parent)
然后在主脚本中调用form_secondary()
时将window
作为参数传递:
...
window=Tk()
window.title("main")
window.attributes('-zoomed', True)
...
# assume it is called inside a function
def some_func():
...
form_secondary(window)
...
...
更新:如果通过菜单项调用,则使用lambda
。
例如:
editmenu.add_command(label='Database', command=lambda: name.form_secondary(window))