python - 子类化 Tkinter.Tcl

标签 python oop tkinter subclassing

我想扩展 Tkinter.Tcl 的行为。我尝试对它进行子类化,但事实证明 Tcl 是一个返回对象的工厂函数。如果 Tcl 是一个类,我会简单地:

from Tkinter import *
class TclPlus(Tcl): # <- broken
    def foo(self, *args, **kwargs):
       print "foo"

我可以子类 Tk,我的新类将有一个 Tcl 工厂函数,但我会回到我开始的地方。此外,Tk 包括所有窗口开销,我不需要它。

完成此任务的最佳方法是什么?

编辑:http://code.activestate.com/recipes/52295-automatic-delegation-as-an-alternative-to-inherita/这似乎正是我所追求的。评论?

最佳答案

如果你查看 Tcl 函数,你可以看到一个有趣的标志用于创建 Tk 实例

def Tcl(screenName=None, baseName=None, className='Tk', useTk=0):
    return Tk(screenName, baseName, className, useTk)

Thus you can subclass Tk and inhibit Tk instantiation

class TclPlus(Tk):
    def __init__(self):
        Tk.__init__(self,useTk=0)


tcl = TclPlus()
tcl.eval("expr 6*7")

关于python - 子类化 Tkinter.Tcl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13282862/

相关文章:

python - tkinter (不确定我的错误可能是由于 .destroy() 造成的)

python - 补丁 - 为什么相对补丁目标名称不起作用?

python - 导入错误 : No module named 'pandas'

python - 内核在 jupyter 笔记本中不断死亡

python - 使用pyqtgraph绘图而不显示

php - 在类的构造函数中返回一个值

C++ 类和子类的大小

Perl:将 Coderef 分配给方法而不使用符号表 Hack

python - 在 Tkinter 中设置图标

python - 使用自动换行创建可调整大小/多行 Tkinter/ttk 标签