我希望创建一个交互式的Python编程游戏,用户可以在Jupyter笔记本中输入命令,并实时在GUI中看到结果。这在普通的Python交互式shell中似乎运行良好。 我让它运行的方法如下:
- 我创建一个文件,称为
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)
- 然后在交互式 Python shell 中执行以下操作:
>> import example
>> canvas = example.create_canvas()
>> oval = example.create_oval(canvas)
然而,当我在IPython中尝试使其工作时,我没有看到GUI界面(我认为这是因为我没有执行tkinter的mainloop函数)。但是,如果我执行了mainloop函数,那么用户就不能再在交互式Python shell中输入了。
所以我的问题是,如何使IPython(以便可以使用jupyter notebooks)的行为像Python一样,在不阻塞控制台用户输入的情况下显示GUI界面?
[编辑]:我已经弄清楚如何在IPython中实现它。 我必须键入
ipython --gui 'tk'
,但是如何将IPython选项传递到jupyter笔记本服务器,以便我可以在笔记本中完成所有工作?