如何在tkinter中使用tklib小部件?

时间:2019-06-16 16:14:15

标签: python python-3.x tkinter

我一直在寻找tkinter的IP地址输入小部件,以便与python3.7一起使用,并在tklib中遇到了ipentry。

https://core.tcl-lang.org/tklib/doc/trunk/embedded/www/tklib/files/modules/ipentry/ipentry.html#section2

这不是为“重新创建轮子”而非常复杂的需求,并且在IP输入框的stackoverflow上有几个示例,但是我真的很想了解如何将tklib中的模块和小部件与tkinter一起使用。文档或示例似乎很少。这是我走了多远:

首先,我必须告诉Python这个小部件存在。

SELECT count(CASE WHEN (age < 18) THEN id ELSE null END)                AS "Under_18",
       count(CASE WHEN (age >= 18 AND age <= 24) THEN id ELSE null END) AS "18-24",
       count(CASE WHEN (age >= 25 AND age <= 34) THEN id ELSE null END) AS "25-34"
FROM contacts

然后,我为小部件创建了一个类。


 import tkinter as tk
 root = tk.Tk()
 root.tk.call(‘package’,’require’,’ipentry’)

然后,我创建它的一个实例并将其打包在我的窗口中。

class iPentry(tk.Widget):
    def __init__(self, master):
        tk.Widget.__init__(self, master, '::ipentry::ipentry’)

到目前为止,一切都很好。我看到一个窗口,其中有一个看起来很熟悉的IPV4地址输入框。
example of ipentry widget

问题是我还没有弄清楚如何使用get或complete或insert小部件命令。当我尝试从我创建的enterIp小部件获取信息时,出现错误。

enterIp = iPentry(root)
enterIp.pack()

我怀疑我缺少一些语法概念。有关如何执行此操作的任何建议?

2 个答案:

答案 0 :(得分:0)

您需要在包装类get()中定义iPentry函数:

def get(self):
    return self.tk.call(self._w, 'get')

实际上,如果要调用ipentry像上面提供的每个函数,则需要定义它们。

答案 1 :(得分:0)

感谢e_t,我得以解决一些棘手的错误,并将其弄清楚了。以下是一些可能希望在Python中使用这些代码的人的示例代码。它们非常有限,即使在lib页面上也有记录,但我发现仍然无法使用。但是它们在某些情况下可能有用。 rdial特别令人惊讶,因为它在视觉上是“拇指轮”而不是典型的圆形表盘。我提供了其中一些在Macos中的外观的屏幕截图。

此代码显示一个iPentry,该标签下面带有一个标签,当您按Enter键时,该标签将填充该地址。然后有3个滑块组,其值将显示在下面的标签中。然后是其值显示在下面的标签中的rdial,最后是一个基于随机数反弹的“电压表”。请享用。

tklib controlwidgets

acw1668