0

我正在尝试构建一个生成动态视觉模型的应用程序(在 Windows 上使用 Python 3 和 PyCharm)。我将 Arcade 用于主查看/用户交互窗口,将 Tkinter 用于初步数据输入、模型参数、数字输出、错误和警告等。

我发现如果我在 Arcade 窗口打开时打开一个 tk 窗口(例如 messagebox.showinfo 或 messagebox.error),应用程序就会挂起。这是重现问题的最小片段:

import tkinter.messagebox
import arcade

tkinter.messagebox.showinfo("Greetings", "hello")
app = arcade.Window(500, 300, "Let's play")
tkinter.messagebox.showinfo("Greetings", "hello again")

第二个消息框永远不会打开,高达 30% 的 CPU 处于活动状态,而 Python 除了(理论上)等待用户输入之外什么都不做。

4

1 回答 1

0

您可以tkinter从以下位置启动应用程序arcade

import arcade
import tkinter as tk

class ArcadeApp(arcade.Window):
    def __init__(self):
        super().__init__(400, 300)
        self.root = None

    def on_closing(self):
        self.root.destroy()
        self.root = None

    def on_draw(self):
        arcade.start_render()
        arcade.draw_text('Click to launch Tkinter', 200, 150, arcade.color.RED, 30, align='center', anchor_x='center')

    def on_mouse_release(self, x, y, button, key_modifiers):
        if not self.root:
            self.root = tk.Tk()
            self.root.geometry('400x300')
            self.root.protocol('WM_DELETE_WINDOW', self.on_closing)
            label = tk.Label(self.root, text='Greetings from Tkinter!')
            label.config(font=('', 20))
            label.place(relx=0.5, rely=0.5, anchor='center')
            self.root.mainloop()

ArcadeApp()
arcade.run()

输出:

拱廊

特金特

于 2021-06-28T07:14:48.843 回答