小编Ral*_*och的帖子

如何使用tkinter在python中嵌入python解释器框架?

我想在我的纯python + tkinter应用程序中添加一个控制终端小部件,类似于Blender中提供的python解释器.它应该在相同的上下文(进程)中运行,以便用户可以添加功能并控制当前从控件小部件运行的应用程序.理想情况下,我还希望它"劫持"当前应用程序的stdout和stderr,以便在运行的应用程序中报告任何问题或调试信息.

这是我到目前为止所提出的.唯一的问题是它没有响应命令,并且当用户关闭窗口时线程不会停止.

import Tkinter as tk
import sys
import code
from threading import *

class Console(tk.Frame):
    def __init__(self,parent=None):
        tk.Frame.__init__(self, parent)
        self.parent = parent
        sys.stdout = self
        sys.stderr = self
        self.createWidgets()
        self.consoleThread = ConsoleThread()
        self.after(100,self.consoleThread.start)

    def write(self,string):
        self.ttyText.insert('end', string)
        self.ttyText.see('end')

    def createWidgets(self):
        self.ttyText = tk.Text(self.parent, wrap='word')
        self.ttyText.grid(row=0,column=0,sticky=tk.N+tk.S+tk.E+tk.W)


class ConsoleThread(Thread):

    def __init__(self):
        Thread.__init__(self)

    def run(self):
        vars = globals().copy()
        vars.update(locals())
        shell = code.InteractiveConsole(vars)
        shell.interact()

if __name__ == '__main__':
    root = tk.Tk()
    root.config(background="red")
    main_window = Console(root)
    main_window.mainloop()
    try:
        if root.winfo_exists():
            root.destroy()
    except: …
Run Code Online (Sandbox Code Playgroud)

python embed interpreter tkinter

9
推荐指数
1
解决办法
2747
查看次数

你能在clojure defrecord中指定方法的返回类型吗?

我已经创建了一个application-info接口和一个类但是当我查看生成的类时,所有方法的返回类型都是Object,我可以将返回类型更改为String吗?文档说使用defrecord可以进行类型提示但不提供示例,我能找到的唯一示例是类型提示字段和方法参数.

SRC/COM/vnetpublishing.clj

(ns com.vnetpublishing)

(defprotocol ApplicationInfo
  (author [obj])
  (author-email [obj])
  (copyright [obj])
  (app-name [obj])
  (version [obj])
)
Run Code Online (Sandbox Code Playgroud)

SRC/Physics.clj

(ns Physics)

(defrecord info [] com.vnetpublishing.ApplicationInfo
  (author [this] "Ralph Ritoch")
  (author-email [this] "Ralph Ritoch <root@localhost>")
  (copyright [this] "Copyright \u00A9 2014 Ralph Ritoch. All rights reserved.")
  (app-name [this] "Physics")
  (version [this] "0.0.1-alpha")
)
Run Code Online (Sandbox Code Playgroud)

methods types clojure

4
推荐指数
1
解决办法
564
查看次数

标签 统计

clojure ×1

embed ×1

interpreter ×1

methods ×1

python ×1

tkinter ×1

types ×1