それぞれのタブは自分のクラスから来るようにしたい(クラスは独自のファイルにあります - 私は今のところ最初のものをテストしています)。tkinterにノートブックタブを追加する - クラスベースの構造ではどうしたらいいですか? (Python 2)
ここは、私が試したものです:
tab1.py
from Tkinter import *
import Tkinter as tk
class Tab(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
fr = Frame(self).pack()
Label(fr, text="one", bg='red', bd=2).pack()
Label(fr, text="two", bg='yellow', bd=2).pack()
if __name__ == '__main__':
root = Tk()
frame = Frame(root).pack()
Tab(frame)
Button(frame, text='only if class', command=root.destroy).pack()
mainloop()
noteBook.py
from Tkinter import *
from ttk import *
from tab1 import Tab
root = Tk()
note = Notebook(root)
main_frame = Frame(note)
button1 = Button(main_frame, text='test').pack()
#tab1 = Tab(note)
tab1 = Frame(note)
tab2 = Frame(note)
tab3 = Frame(note)
Tab(tab1)
Button(tab1, text='Exit', command=root.destroy).pack()
note.add(tab1, text = "Tab One", compound=TOP)
note.add(tab2, text = "Tab Two")
note.add(tab3, text = "Tab Three")
note.pack()
root.mainloop()
exit()
実行して:
python2.7 noteBook.py
問題は、tab1.py
の内容が最初のタブに表示されず、ノートブック全体を含むフレーム内に表示されることです。
また、python2.7 noteBook.py
で直接tab1.py
を実行しているときは、今のところ正しく表示されるようにするには、if __name___
...の部分の余分なボタンを表示する必要があります。
複数の例がありますが、必要なものが1つしか見つかりませんでしたが、実際の解決策はなく、python3のためのものでした。私はpython2を好きです。ありがとう。あなたは上記を行うと
fr = Frame(self).pack()
、fr
はNone
None
戻り.pack()
ので(x().y()
がy()
の値を返すため)を次のとおりです。
それは 'python2.7 noteBook.py'を実行したとき、それはノートブックの中に行くべきタブを挿入するに成功したが、それは' python2.7のtab1.py'壊す:私は、ファイルを実行し、 'TAB1を.py'を直接実行すると、タブが正しく表示されず、 'Tab'クラス内の2つのラベルが表示されません。 – Touten
HIブライアン、私はTkinterのあなたの他のポストのいくつかをチェックして、多くのことをより明確にしました。ありがとう。 – Touten