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

使用交互式ipython笔记本运行Tkinter,python,tkinter,jupyter-notebook,ipython,Python,Tkinter,Jupyter Notebook,Ipython,我想创建一个交互式python编码游戏,用户可以在jupyter笔记本中输入命令,并在GUI上实时查看结果。这在常规的python交互式shell中似乎工作得很好。我让它运行的方法如下: 我创建了一个文件,用以下代码将其命名为example.py: 然后在交互式python shell中,我执行以下操作: 然而,当我试图在ipython中实现这个功能时,我没有看到GUI(我假设这是因为我没有执行tkintersmainloop函数)。但是如果我执行mainloop函数,那么我就不能再在交互式py

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

  • 我创建了一个文件,用以下代码将其命名为
    example.py
  • 然后在交互式python shell中,我执行以下操作:
  • 然而,当我试图在ipython中实现这个功能时,我没有看到GUI(我假设这是因为我没有执行tkinters
    mainloop
    函数)。但是如果我执行
    mainloop
    函数,那么我就不能再在交互式python shell中使用用户类型了

    所以我的问题是,如何让ipython(这样我就可以使用jupyter笔记本)像python一样运行并显示GUI,而不阻止来自控制台的用户输入

    [编辑]:我知道如何使用ipython。
    我必须键入
    ipython--gui'tk'
    ,但是我如何将ipython选项传递给jupyter笔记本服务器,以便我可以在笔记本中完成所有操作?

    好的,我想好了

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

    即使在%gui-tk之后,ipython在执行:oval=example后也不会返回任何行内内容。create_oval(canvas)您是在jupyter笔记本中运行还是通过ipython在终端中运行?我通过在命令提示符(终端)中键入jupyter-notebook来运行它当您尝试在jupyter之外的常规python文件中运行tkinter时,tkinter是否有效?当你通过ipython运行tkinter时,它能工作吗?如果我是你,我会先测试这两种配置。
    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)
    
    >> import example
    >> canvas = example.create_canvas()
    >> oval = example.create_oval(canvas)