2

Python でタブ付きの GUI を作成しようとしていますが、タブの有効/無効状態を切り替えられるようにしたいと考えています (つまり、ユーザーがタブを切り替えないようにし、非アクティブなタブをゴースト化してこの事実を明らかにします)。これまでのところ、この状態の切り替えを行う方法を理解できませんでした。

Windows の Python ディストリビューションに組み込まれているため、Tkinter や Tix を使用することにしました (追加のサードパーティの依存関係をインストールするようにユーザーをガイドすることは、価値があるよりも面倒です)。私はTkinterを少し使ったことがありますが、今までTixを使用したことはありません-タブがそれを必要とするようです. そこで、 http: //svn.python.org/projects/python/trunk/Demo/tix/samples/NoteBook.py のデモに基づいて、2 つのタブを持つ Tix.NoteBook を作成しました。

タブを無効にするために、Tix タブ インスタンスの唯一の関連する属性 (nb.hard_diskデモ コードなど) はconfigure()、素朴に Tkinter のようなことをしているように見えnb.hard_disk.configure(state=Tix.DISABLED)ます。TclError: unknown option "-state"

「Tixノートブックタブを無効にする」を検索しても何も得られず、より一般的な「Tixウィジェットを無効にする」でさえ、理解/使用できるものは何も得られません。正しい方向へのポインタに感謝します。

4

2 に答える 2

9

一般に、Tkinter でウィジェットを無効にする方法は、「state」オプションを に設定するTk.DISABLEDか、より確実に設定すること"disabled"です。以下は、タブをグレー表示して無効にします。

notebook.tab(0, state="disabled")

0 は無効にするタブのインデックスであり、 notebook はノートブック オブジェクトです。それはあなたの質問に答えていますか?

以下は、デモ用の簡単なノートブックの例です。

import Tkinter
import ttk

window = Tkinter.Tk()
notebook = ttk.Notebook(window)
notebook.pack()
subframe = Tkinter.Frame(window)
subframe.pack()
notebook.add(subframe, text="tab", state="normal")
def buttonaction():
    notebook.tab(0, state="disabled")
button = Tkinter.Button(subframe, command=buttonaction, text="click to disable tab")
button.pack()

if __name__ == "__main__":
    window.mainloop()
于 2014-01-10T12:44:32.530 に答える