2

問題は、メニューがパックされないことです。私は tkinter モジュールを使用しています。これまでのところ、試行された製品は、その上にメニュー バーがあるテキスト ボックスである必要があります。各メニューボタンをクリックすると、平均値が表示されます。メニューオプションごとに関数をまだ書いていないので、すべての「add_command」にコマンドがないことがわかります

from tkinter import *
import tkinter.messagebox
import tkinter

# Text Box
class ScrolledText(Frame):
        def __init__(self, parent=None, text='', file=None):
                Frame.__init__(self, parent)
        self.pack(expand=YES, fill=X)               #make expandable
        self.makewidgets()
        self.settext(text,file)

    def makewidgets(self):
        sbar = Scrollbar(self)
        text = Text(self, relief=SUNKEN)
        sbar.config(command=text.yview)                 # xlink sbar and text
        text.config(yscrollcommand=sbar.set)            # moving one moves other
        sbar.pack(side=RIGHT, fill=Y)                   #pack first-clip last
        text.pack(side=LEFT, expand=YES, fill=BOTH)     # text clipped first
        self.text = text

def settext(self, text='', file=None):
    if file:
        text = open(file, 'r').read()
    self.text.delete('1.0', END)
    self.text.insert('1.0', text)
    self.text.mark_set(INSERT, '1.0')
    self.text.focus()

def gettext(self):
    return self.text.get('1.0', END+'-1c')

# Menu Bar
class SimpleEditor(ScrolledText):
    def __init__(self, parent=None, file=None):
        frm = Frame(parent)
        frm.pack(fill=X)
        #Menus
        mf = Menubutton(root, text='File', width=5, activebackground='lightblue')
        mf.grid(row=0, column=0, sticky=W)
        mf.menu = Menu(mf, tearoff=0)
        mf["menu"] = mf.menu

        me = Menubutton(root, text='Edit', width=5, activebackground='lightblue')
        me.grid(row=0, column=1)
        me.menu = Menu(me, tearoff=0)
        me["menu"] = me.menu

        mo = Menubutton(root, text='Format', width=8, activebackground='lightblue')
        mo.grid(row=0, column=2, sticky=W)
        mo.menu = Menu(mo, tearoff=0)
        mo["menu"] = mo.menu

        mv = Menubutton(root, text='File', width=5, activebackground='lightblue')
        mv.grid(row=0, column=3, sticky=W)
        mv.menu = Menu(mv, tearoff=0)
        mv["menu"] = mv.menu

        mh = Menubutton(root, text='Help', width=5, activebackground='lightblue')
        mh.grid(row=0, column=4, sticky=W)
        mh.menu = Menu(mh, tearoff=0)
        mh["menu"] = mh.menu

        # File Options
        mf.menu.add_command(label='New          Ctrl+N', activebackground='lightblue')
        mf.menu.add_command(label='Open...      Ctrl+O', activebackground='lightblue')
        mf.menu.add_command(label='Save         Ctrl+S', activebackground='lightblue')
        mf.menu.add_command(label='Save as...', activebackground='lightblue')
        mf.menu.add_separator()
        mf.menu.add_command(label='Page Setup...', activebackground='lightblue')
        mf.menu.add_command(label='Print...      Ctrl+P', activebackground='lightblue')
        mf.menu.add_separator()
        mf.menu.add_command(label='Exit', activebackground='lightblue')

        # Edit Options
        me.menu.add_command(label='Undo         Ctrl+Z', activebackground='lightblue')
        me.menu.add_separator()
        me.menu.add_command(label='Cut          Ctrl+X', activebackground='lightblue')
        me.menu.add_command(label='Copy         Ctrl+C', activebackground='lightblue')
        me.menu.add_command(label='Paste        Ctrl+V', activebackground='lightblue')
        me.menu.add_command(label='Delete          Del', activebackground='lightblue')
        me.menu.add_separator()
        me.menu.add_command(label='Find         Ctrl+F', activebackground='lightblue')
        me.menu.add_command(label='Find Next        F3', activebackground='lightblue')
        me.menu.add_command(label='Replace...   Ctrl+H', activebackground='lightblue')
        me.menu.add_command(label='Go To...     Ctrl+G', activebackground='lightblue')
        me.menu.add_separator()
        me.menu.add_command(label='Select All   Ctrl+A', activebackground='lightblue')
        me.menu.add_command(label='Time/Date        F5', activebackground='lightblue')

        # Format Options
        mo.menu.add_checkbutton(label='Word Wrap', activebackground='lightblue')
        mo.menu.add_command(label='Font...', activebackground='lightblue')

        # View Options
        mv.menu.add_checkbutton(label='Status Bar', activebackground='lightblue')

        # Help Options
        mh.menu.add_command(label='View Help', activebackground='lightblue')
        mh.menu.add_separator()
        mh.menu.add_command(label='About Notepad', activebackground='lightblue')


if __name__ == '__main__':
    root = Tk()
    if len(sys.argv) > 1:
        ScrolledText(file=sys.argv[1]).mainloop()
    else:
        ScrolledText(text='').mainloop()
    root.mainloop()
4

1 に答える 1