Запуск Tkinter с интерактивным блокнотом i python - PullRequest
1 голос
/ 08 мая 2020

Я хочу создать интерактивную игру по кодированию python, в которой пользователи могут вводить команды в блокнот jupyter и видеть результат на GUI в реальном времени. Кажется, это нормально работает в обычной интерактивной оболочке python. Я выполняю это следующим образом:

  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)
Затем в интерактивной оболочке python я делаю следующее:
>> import example
>> canvas = example.create_canvas()
>> oval = example.create_oval(canvas)

Однако, когда я пытаюсь заставить это работать в i python, я не вижу GUI (я предполагаю, что это потому, что я не выполняю функцию tkinters mainloop). Но если я выполню функцию mainloop, я больше не смогу иметь пользовательский ввод в интерактивной оболочке python.

Итак, мой вопрос: как мне заставить i python (чтобы я мог использовать записные книжки jupyter) вести себя как python и отображать GUI без блокировки ввода пользователя с консоли?

[РЕДАКТИРОВАТЬ]: Я понял, как это сделать с i python. Мне нужно ввести ipython --gui 'tk', но как мне передать параметры i python на сервер ноутбука jupyter, чтобы я мог делать все это в ноутбуке?

1 Ответ

1 голос
/ 08 мая 2020

Ладно, разобрался.

Ключ в том, чтобы поставить строку: %gui tk в начале записной книжки. Это делает что-то похожее на параметр --gui 'tk для i python.

...