Как использовать виджеты tklib в tkinter? - PullRequest
0 голосов
/ 16 июня 2019

Я искал виджет ввода IP-адреса для tkinter для использования с python3.7 и наткнулся на ipentry в tklib.

https://core.tcl -lang.org / tklib / док / багажник / встроенный / WWW / tklib / файлы / модули / ipentry / ipentry.html # section2

Это не очень сложная необходимость «воссоздать колесо», и есть несколько примеров использования stackoverflow для блоков ввода IP, но мне бы очень хотелось понять, как использовать модули и виджеты в tklib с tkinter. Документация или примеры кажутся немногочисленными. Вот как далеко я продвинулась:

Прежде всего, я должен сказать Python, что этот виджет существует.


 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’)

Затем я создаю его экземпляр и упаковываю в окно.

enterIp = iPentry(root)
enterIp.pack()

Пока все хорошо. Я получаю окно со знакомым окном ввода для адреса IPV4.
example of ipentry widget

Проблема в том, что я не понял, как использовать команды виджетов get, complete или insert. Когда я пытаюсь получить от созданного мной виджета enterIp, я получаю сообщение об ошибке.

myip = enterIp.get()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'iPentry' object has no attribute 'get'

Я подозреваю, что мне не хватает некоторых синтаксических понятий. Любые предложения, как это сделать?

1 Ответ

0 голосов
/ 17 июня 2019

Вам необходимо определить get() функцию в вашем классе оболочки iPentry:

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

На самом деле вам нужно определить все функции, которые ipentry предоставляет, как указано выше, если вы хотите вызывать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...