Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python2.7/Windows7/Tkinter:将临时子窗口置于父窗口之上_Python_Tkinter_Windows 7 - Fatal编程技术网

Python2.7/Windows7/Tkinter:将临时子窗口置于父窗口之上

Python2.7/Windows7/Tkinter:将临时子窗口置于父窗口之上,python,tkinter,windows-7,Python,Tkinter,Windows 7,正如我从Tkinter参考中了解到的,在其父窗口上绘制一个临时子窗口(居中?)。这在Linux中适用,但在Windows(7)中不适用 你对为什么会发生这种情况有什么建议吗 我可以使用.geometry()方法手动将窗口居中,但是当GUI计算某些值时(比如说一秒钟),会出现一个小窗口,根本没有GUI,即使调用.draw方法,它也会飞到指定的位置 非常感谢 # -*- coding: utf-8 -*- import Tkinter as tk import ttk class Parent(

正如我从Tkinter参考中了解到的,在其父窗口上绘制一个临时子窗口(居中?)。这在Linux中适用,但在Windows(7)中不适用

你对为什么会发生这种情况有什么建议吗

我可以使用.geometry()方法手动将窗口居中,但是当GUI计算某些值时(比如说一秒钟),会出现一个小窗口,根本没有GUI,即使调用.draw方法,它也会飞到指定的位置

非常感谢

# -*- coding: utf-8 -*-

import Tkinter as tk
import ttk

class Parent(tk.Tk):

    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.txt = tk.Text(master=self)
        self.txt.pack()
        self.btn = ttk.Button(master=self, text='Show Child',
                              command=self.show)
        self.btn.pack()
        self.mainloop()

    def show(self, *args):
        Child(self)


class Child(tk.Toplevel):

    def __init__(self, master, *args, **kwargs):
        tk.Toplevel.__init__(self, *args, **kwargs)
        self.txt = tk.Text(master=self)
        self.txt.pack()

Parent()

好的,我用下面的方法解决了这个问题:

  • 退出()
    窗口
  • .geometry()
    设置为在父窗口上方居中
  • 进行一些计算以获得所需的UI
  • .update\u idletasks()
  • 最后,
    .deiconify()
    打开窗口

    • 好的,我用以下方法解决了这个问题:

      • 退出()
        窗口
      • .geometry()
        设置为在父窗口上方居中
      • 进行一些计算以获得所需的UI
      • .update\u idletasks()
      • 最后,
        .deiconify()
        打开窗口