使用交互式 ipython 笔记本运行 Tkinter

Con*_*nor 4 python tkinter ipython jupyter-notebook

我想创建一个交互式 Python 编码游戏,用户可以在 Jupyter Notebook 中输入命令并在 GUI 上实时查看结果。这似乎在常规的 python 交互式 shell 中工作得很好。我让它运行的方法如下:

  1. 我创建了一个文件,让我们example.py使用以下代码调用它:
import tkinter as tk


def create_canvas():
    root = tk.Tk()
    root.resizable(False, False)
    root.title("Karel")
    frame = tk.Frame(root)
    frame.pack()
    canvas = tk.Canvas(frame, bg="white", width=500, 
        height=500)
    canvas.pack()
    return canvas


def create_oval(canvas):
    return canvas.create_oval(150, 150, 155, 155, fill='#000')



def move(canvas, oval):
    canvas.move(oval, 0, -50)
Run Code Online (Sandbox Code Playgroud)
  1. 然后在交互式 python shell 中执行以下操作:
>> import example
>> canvas = example.create_canvas()
>> oval = example.create_oval(canvas)
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在 ipython 中使其工作时,我没有看到 GUI(我假设这是因为我不执行 tkintersmainloop函数)。但如果我执行该mainloop函数,那么我就无法再让用户在交互式 python shell 中输入内容了。

所以我的问题是,如何让 ipython (这样我可以使用 jupyter 笔记本)表现得像 python 并显示 GUI,而不阻止用户从控制台输入?

[编辑]:我想出了如何使用 ipython 来做到这一点。我必须输入ipython --gui 'tk',但如何将 ipython 选项传递到 jupyter 笔记本服务器,以便我可以在笔记本中完成这一切?

Con*_*nor 7

好吧,我明白了。

关键是将行: %gui tk放在笔记本的开头。这与 ipython 的选项类似--gui 'tk

  • 感谢 OP 发布问题和答案。我正在使用基于 IPython 的 PyCharm 控制台,并在启动脚本中添加命令 %qui tk (主面板区域中的设置/构建、执行、部署/控制台/Python 控制台/启动脚本)完美运行。 (2认同)