Hi wuf, diese index Methode ist eine völlig falsch benannte Methode. Ich hatte mir eigentlich gedacht, dass sie das mit dem tearoff berücksichtigen würde und dachte an diese Lösung:
Code: Alles auswählen
def count_menu_items(self):
last_index = self.index(tk.END)
first_index = self.index(0)
print('how many: {}'.format(last_index - first_index + 1))
Aber keine Spur davon. Diese Methode kann man also nur für einen Zweck gebrauchen, nämlich um den letzten Index herauszubekommen. Viewiele es sind, ergibt sich dann durch:
Code: Alles auswählen
# -*- coding: utf-8 -*-
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
class Application(tk.Tk):
def __init__(self,**kwargs):
tk.Tk.__init__(self,**kwargs)
# widget definitions ===================================
self.menu = Menu_1(self,tearoff=0)
#self.menu = Menu_1(self)
self['menu'] = self.menu
class Menu_1(tk.Menu):
def __init__(self,master,**kwargs):
tk.Menu.__init__(self,master,**kwargs)
# widget definitions ===================================
self.add_command(label='command')
self.add_checkbutton(label='checkbutton')
self.add_radiobutton(value='radiobutton', label='radiobutton')
self.count_menu_items()
def count_menu_items(self):
x = self.index(tk.END) - self['tearoff'] + 1
print('how many: {}'.format(x))
if __name__ == '__main__':
Application().mainloop()
Natürlich zähle ich auch Separatoren mit. Es ging hautsächlich darum, um den letzten Index herauszubekommen. Dadurch kann ich jetzt auch Menüs von tcl/tk nach tkinter konvertieren.
Bleibt nur noch das labelwidget auch zu implementieren. Das ist das Widget, das man statt des Textes bei einem LabelFrame angeben kann. Ob ich aber dafür im Internet ein tcl/tk Beispiel finde? Denn leider verstehe ich kaum etwas von tcl/tk. Konvertieren kann man auch, ohne tcl/tk zu verstehen.