0

たとえば、Tkinterを使用したアプリがあります。

from Tkinter import *
from ttk import *

class MyMenu(Menu):
    ....

class MyNotebook(Notebook):
    ....

tk=Tk()

f1=Frame(master=tk)
f2=Frame(master=tk)

menu=MyMenu(master=f1)

notebook=MyNotebook(master=f2)

commandに追加したいのですがmenu、これにより に新しいタブが追加されますnotebook。これどうやってするの?

PSf1 != f2重要です!

commandsasで使用される PPS 関数は、menu別のファイルにある可能性があります

4

2 に答える 2

1

フレームの 1 つは、ウィンドウで構成する必要があり、ジオメトリ マネージャーで配置する必要がないため、メニューには必要ありません。これに似たものが仕事をすることができます:

# ...
def add_tab():
    text = "Tab {}".format(len(notebook.tabs()))
    frame = Frame(notebook, width=100, height=100)
    notebook.add(frame, text=text)

menu=MyMenu()
menu.add_command(label="Add tab", command=add_tab)
tk.config(menu=menu)

ただし、次のことをお勧めします。a) グローバル変数を使用する代わりにクラスを定義します。import *b) Tkinter と ttk は異なるクラスに同じ名前を使用するため、使用しないでください。より整理されるだけでなく、読みやすくなります。

import Tkinter as tk
import ttk

class MyMenu(tk.Menu):
    pass

class MyNotebook(ttk.Notebook):
    pass

class App(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.frame = ttk.Frame(self)
        self.notebook = MyNotebook(self.frame)
        self.frame.pack()
        self.notebook.pack()
        self.add_tab()

        menu = MyMenu()
        menu.add_command(label="Add tab", command=self.add_tab)
        self.config(menu=menu)

    def add_tab(self):
        text = "Tab {}".format(len(self.notebook.tabs()))
        frame = ttk.Frame(self.notebook, width=100, height=100)
        self.notebook.add(frame, text=text)

app = App()
app.mainloop()
于 2013-05-27T21:05:34.477 に答える