私はTkinterでウィザードを作成しています。ほとんどの各ステップでは、ナビゲーションとキャンセルのためのボタンと同じフッターがあります。どうすればこれを達成できますか?フレームを作成する必要がありますか?そして、一般に、すべてのステップを異なるフレームとして作成する必要がありますか?Tkinterでウィザードを作成する
0
A
答えて
1
この質問に対する回答は、Switch between two frames in tkinterとあまり変わりません。唯一の重要な違いは、下部に永続的なボタンセットが欲しいということですが、特別なことはありません。個々のページ(またはステップ)を保持するウィジェットの兄弟としていくつかのボタンを含むフレームを作成するだけです。
Frame
から継承するウィザードステップごとに別々のクラスを作成することをお勧めします。次に、現在のステップのフレームを削除し、次のステップのフレームを表示するだけです。
例えば、ステップは、(のpython 3の構文を使用して)次のようになります。
class Step1(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
header = tk.Label(self, text="This is step 1", bd=2, relief="groove")
header.pack(side="top", fill="x")
<other widgets go here>
他のステップは、概念的には同一である:ウィジェットの束を持つフレーム。
メインプログラムまたはウィザードクラスは、必要に応じて各ステップをインスタンス化するか、あらかじめそれらをすべてインスタンス化します。次に、ステップ番号をパラメータとし、それに応じてUIを調整するメソッドを記述することができます。例えば
:
class Wizard(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.current_step = None
self.steps = [Step1(self), Step2(self), Step3(self)]
self.button_frame = tk.Frame(self, bd=1, relief="raised")
self.content_frame = tk.Frame(self)
self.back_button = tk.Button(self.button_frame, text="<< Back", command=self.back)
self.next_button = tk.Button(self.button_frame, text="Next >>", command=self.next)
self.finish_button = tk.Button(self.button_frame, text="Finish", command=self.finish)
self.button_frame.pack(side="bottom", fill="x")
self.content_frame.pack(side="top", fill="both", expand=True)
self.show_step(0)
def show_step(self, step):
if self.current_step is not None:
# remove current step
current_step = self.steps[self.current_step]
current_step.pack_forget()
self.current_step = step
new_step = self.steps[step]
new_step.pack(fill="both", expand=True)
if step == 0:
# first step
self.back_button.pack_forget()
self.next_button.pack(side="right")
self.finish_button.pack_forget()
elif step == len(self.steps)-1:
# last step
self.back_button.pack(side="left")
self.next_button.pack_forget()
self.finish_button.pack(side="right")
else:
# all other steps
self.back_button.pack(side="left")
self.next_button.pack(side="right")
self.finish_button.pack_forget()
機能next
、back
の定義、及びfinish
は非常に単純である:x
が示さなければならないステップの数であるだけself.show_step(x)
を呼び出します。例えば、next
は次のようになります。
def next(self):
self.show_step(self.current_step + 1)
関連する問題
- 1. ウィザードを作成する
- 2. ウィザードのコールバックの作成?
- 3. ウィザードでレコードの保存ボタンを作成します - 私はステップでウィザードを作成しましたOdoov8
- 4. ScrollllでTkinterリストボックスを作成する
- 5. TkinterでPython RTL Textboxを作成する
- 6. tkinterでチャットウィンドウを作成するには?
- 7. tkinterでメッセージボックスを作成するには?
- 8. Tkinterでハイパーリンクを作成する
- 9. uml-designer: '表現ウィザードを作成する'が空です
- 10. ユーザー作成ウィザードでユーザーにアクティベーションコードを送信する方法は?
- 11. ウィザードで複数項目テンプレートを作成する方法
- 12. Oracle APEXでウィザードを作成するための手順5.1
- 13. .netでウィザードのようなuiを作成するには
- 14. 複数のプログラミング言語でコードを作成するウィザード
- 15. クラスを生成し、作成日食ウィザードで注釈を追加
- 16. Tkinterボタンの作成
- 17. Tkinterの数学クイズを作成する
- 18. Tkinterにホームボタンを作成するには
- 19. キャンバスにオブジェクトを作成するPython tkinter
- 20. asys.netとeasysliderを使用して登録ウィザードを作成する
- 21. Tkinterのダイヤモンドを作成
- 22. Ember.js - 多段階ウィザードを作成する方法?
- 23. Googleマップのスタイル作成ウィザードを実装するJSON
- 24. 新しいユーザーのためのウィザードを作成する
- 25. 文書群を構成するウィザード
- 26. tkinterでウィンドウを作成する方が良いですか?
- 27. tkinterエラーメッセージボックスの作成方法
- 28. 動的ページ作成tkinter
- 29. 空のTKinter GUIの作成
- 30. ループで作成されたTkinterチェックボックス
本当に明確ではない、あなたは少しあなたのウィザードが構造化されてどのように多くの、何のインターフェイスの外観を伝えることができ、また、フッターの役割は、正確には何ですか?ボタンの機能は、タイトルによって既に明らかです。 –
[tkinterの2つのフレームを切り替える](http://stackoverflow.com/questions/7546050/switch-between-two-frames-in-tkinter)を参照してください。それは 'Frame'を使って' Pages'を作成します - 同じ方法で 'Frame'を使うか、' Frame'を使ってボタン付きのウィジェットを作り(そして他の要素のために置く)、このウィジェットを使って 'Pages'を作ります。 – furas