code: def drawtext(self):
      textx = self.x + 20 - 1
      texty = self.y - 4
      labeltext = self.item.GetLabelText()
      if labeltext:
          id = self.canvas.create_text(
              textx, texty, anchor="nw", text=labeltext
          )
          self.canvas.tag_bind(id, "<1>", self.select)
          self.canvas.tag_bind(id, "<Double-1>", self.flip)
          x0, y0, x1, y1 = self.canvas.bbox(id)
          textx = max(x1, 200) + 10
      text = self.item.GetText() or "<no text>"
      try:
          self.entry
      except AttributeError:
          pass
      else:
          self.edit_finish()
      try:
          self.label
      except AttributeError:
          # padding carefully selected (on Windows) to match Entry widget:
          self.label = Label(
              self.canvas, text=text, bd=0, padx=2, pady=2
          )
      theme = idleConf.CurrentTheme()
      if self.selected:
          self.label.configure(idleConf.GetHighlight(theme, "hilite"))
      else:
          self.label.configure(idleConf.GetHighlight(theme, "normal"))
      id = self.canvas.create_window(
          textx, texty, anchor="nw", window=self.label
      )
      self.label.bind("<1>", self.select_or_edit)
      self.label.bind("<Double-1>", self.flip)
      self.label.bind(
          "<MouseWheel>", lambda e: wheel_event(e, self.canvas)
      )
      self.label.bind(
          "<Button-4>", lambda e: wheel_event(e, self.canvas)
      )
      self.label.bind(
          "<Button-5>", lambda e: wheel_event(e, self.canvas)
      )
      self.text_id = id
  
imports: import os
  from tkinter import *
  from tkinter.ttk import Frame, Scrollbar
  from idlelib.config import idleConf
  from idlelib import zoomheight
label_desc: Use image node_id 16 for calling the TreeNode obj's underlying member method code with example usage: obj.drawtext() without return types