1

(这个问题最初发布到 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 类的Show() 方法System.Windows.Forms.Form/Control

foo()函数可以从非 GUI 应用程序调用,作为对某些信号的响应,甚至可以从 C++ 应用程序调用。

关键是没有明确的等待事件并且窗口是无模式的。

如何在 Tkinter 中实现类似的行为?是否有任何 Tkinter 惯用的方法来避免调用mainloop()wait_window()方法(两者都是阻塞的)?

4

1 回答 1

1

您可以通过创建一个实例来创建一个非模态弹出窗口Toplevel(假设您已经创建了根窗口)。但是,您需要让事件循环运行,因为这是 tkinter 用来知道何时需要重新绘制窗口的机制。

于 2013-10-14T14:10:11.867 回答