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