2016-06-28 183 views
2

私は一連のユーザー入力を与えられた関数を実行するプログラムを作成しようとしています。ユーザー入力のいくつかは特定の状況下でのみ必要であり、可能であれば、これらの入力を必要とする状況が存在することを示すチェックボタンが選択されている場合には、入力ボックスとラベルを表示します。どのようにすればよいかわからない:Tkinterでウィジェットを表示/非表示にするには?

  • 私がすでに存在する行の間に追加するラベルと入力ボックスを入れてください。

  • チェックボタンが選択されていないときにラベルと入力ボックスが表示されないようにするには、destroyを入力せずに「非表示」にしてください。

    • 例:私は(表示されなくなるために箱を引き起こす)チェックボタンの選択を解除した後、表示される新しいボックスにデータを入力し、チェックボタンを選択します。チェックボタンを再選択すると、チェックボタンが最後に選択されたときに入力したデータはそのまま残ります。
  • 「表示」チェックボタンが以前deselctedされた後に再選択された場合、以前に「隠された」されていた同じラベルと入力ボックス。

このようなことが可能かどうかわかりませんが、そうでない場合は教えてください。また、私は可能であればチェックボタンは、彼らの存在はに慣れていないユーザーを混乱させるしないようにボックスが表示されないことを、選択解除されているが、私は好むだろうが、私は単純に、関連する入力ボックスstateDISABLEDに設定できることを承知しています追加的なインプットが必要となる状況。

これが関連している場合は、私は、Windows 10のProでPython 2.7.9、2.2.0アナコンダ(64ビット)、およびTkinterのバージョン81008を使用しています。私が知りたいことがあれば何かを残しておけば、さらに詳しい情報をリクエストすることができます。あなたが提供できる助けを前もって感謝します。

答えて

2

私はあなたがgrid_remove()をしたいと思います。 http://www.tkdocs.com/tutorial/grid.htmlから

グリッドの方法を「忘れる」、引数として一つ以上の スレーブウィジェットのリストを取って、彼らは現在の一部 だグリッドから奴隷を除去するために使用することができます。これでウィジェットは完全に破棄されませんが、最初に の場所にグリッド化されていなかったかのように、 が画面から消えてしまいます。 最初に割り当てられたグリッドオプションは失われていますが、後でグリッドを再度グリッド化することはできます。

グリッドの「削除」の方法は、グリッド のオプションが記憶されるだろうことを除いて、同じように動作します。

醜い例を以下に示します。グリッドオプションと入力テキストを再生して、保存方法を確認します。

def toggle_entry(): 
    global hidden 
    if hidden: 
     e.grid() 
    else: 
     e.grid_remove() 
    hidden = not hidden 

hidden = False 
root = tk.Tk() 
e = tk.Entry(root) 
e.grid(row=0, column=1) 
tk.Button(root, text='Toggle entry', command=toggle_entry).grid(row=0, column=0) 
root.mainloop() 
+0

さて、これまでの感覚を作ります。削除されたウィジェットをグリッドにどのように追加すればよいですか?私は '.grid()'メソッドを呼びますか? – train1855

+0

はい、この例を参照してください。私は、 'pack'のような他のグリッドマネージャにとっても同様のメソッドがあると思います。 – Goyo

関連する問題