(这个问题是originally posted到python-tkinter邮件列表)
我正在尝试使用Tkinter从Windows .NET应用程序复制非阻塞(或无模式)窗口行为。
我得到的应用程序显示一个新窗口以响应某些事件(可能是非GUI事件)并继续执行而不显示新窗口。
以下是相关代码:
private void foo(object sender, EventArgs e)
{
Form1 f = new Form1();
f.Show(); // displays a window and continues
Console.WriteLine("Form created");
}
重要的一点是调用.NET类System.Windows.Forms.Form/Control
的{{3}}。
可以从非GUI应用程序调用{{1}}函数,作为对某些信号的响应,甚至可以从C ++应用程序调用。
重点是没有明确的等待事件,窗口是无模式的。
如何在Tkinter中实现类似的行为?
是否有任何Tkinter惯用方法可以避免调用foo()
或mainloop()
方法(两者都阻止)?
答案 0 :(得分:1)
您可以通过创建Toplevel
的实例来创建非模态弹出窗口(假设您已经创建了根窗口)。但是,您需要运行事件循环,因为这是tkinter用于了解窗口何时需要重新绘制的机制。