ph-*_*ett 5 python tkinter event-loop ipython jupyter-notebook
使用像这样的简单 tkinter gui:
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid()
self.createWidgets()
def printHello(self):
print("Hello")
def createWidgets(self):
self.quitButton = tk.Button(self, text='Quit',
command=self.quit)
self.quitButton.grid(row=1,column=0)
self.printButton = tk.Button(self, text='Print',command=lambda: self.printHello())
self.printButton.grid(row=1,column=1)
app = Application()
app.master.title('Sample application')
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
我试图按照此文档将事件循环与 ipython 笔记本的内核连接:https://ipython.org/ipython-doc/3/config/eventloops.html
但我似乎不太明白它是如何工作的:@register_integration('tk')
如何准确连接事件循环?如果我这样做,我可以用连接的事件循环做什么?
我相信你想做的是这样的:
from ipykernel.eventloops import register_integration
@register_integration("tk")
def loop_tk(kernel):
import tkinter as tk
"""Start a kernel with the Tk event loop."""
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.grid()
self.createWidgets()
def printHello(self):
print("Hello")
def createWidgets(self):
self.quitButton = tk.Button(self, text='Quit',
command=self.quit)
self.quitButton.grid(row=1,column=0)
self.printButton = tk.Button(self, text='Print',command=lambda: self.printHello())
self.printButton.grid(row=1,column=1)
kernel.window = tk.Tk()
kernel.app = Application(kernel.window)
kernel.window.title('Sample application')
kernel.window.mainloop()
%gui tk
Run Code Online (Sandbox Code Playgroud)
首先,您需要导入该函数(我认为该函数没有在任何地方记录)。
其次,您需要注册集成并定义函数loop_tk。您必须运行Tk实例而不是Frame,因为Frame没有函数mainloop。
最后,使用魔法gui tk来表明您正在创建一个 Tk 事件循环。
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |