2017-04-26 2 views
0

キャンバスを非表示にして、表示したいときだけ表示する方法を教えてください。キャンバスを隠す/表示する

self.canvas.config(state='hidden') 

ただあなただけあなたがpackを使用していると言うコメントでは「無効」または「通常」

+0

答えは、ウィジェットをどのように表示しているかによって異なります。あなたは 'pack'、' place'、 'grid'を使っていますか、別のウィジェット(別のキャンバスかテキストウィジェット)に埋め込んでいますか? –

+0

パック。これまでの例で使用されていた場所を見たのは、ラベルをキャンバスに追加するときだけでした。 – confused

+0

実際にもう少し気にさせてください。地図のキャンバスで、私がpack_propagateを使用している他の例でそれを見たのですが、ポップアップキャンバスの通常のパックに行っただけです。 – confused

答えて

0

を使用することができますというエラーを与えます。その場合は、pack_forgetを使用して非表示にすることができます。

import tkinter as tk 

def show(): 
    canvas.pack() 

def hide(): 
    canvas.pack_forget() 

root = tk.Tk() 
root.geometry("400x400") 

show_button = tk.Button(root, text="show", command=show) 
hide_button = tk.Button(root, text="hide", command=hide) 

canvas = tk.Canvas(root, background="pink") 
show_button.pack(side="top") 
hide_button.pack(side="top") 
canvas.pack(side="top") 

root.mainloop() 

ただし、このような場合には通常gridを使用する方がよいでしょう。 pack_forget()はウィジェットの場所を覚えていないので、次回にpackを呼び出すと、別の場所にウィジェットが表示されることがあります。一方、show_button.pack(side="top")

grid前に、2行までcanvas.pack(side="top")を移動し、例を参照するには、オプションなしでgrid()への後続の呼び出しは、ウィジェットを置くように、設定のすべてを覚えているだろうgrid_remove方法があります正確に同じ場所に戻る。

+0

パックを使用すると、ポップアップコールのコードをdef__init__と比較して配置するほうが良いでしょう。 – confused

+0

"ポップアップコール"の意味がわかりません。 –

+0

申し訳ありませんが、悪い用語。私は、コードがアップしてポップアップを表示することになっているときに行く関数を意味します。私はちょうどdef_initと対比してポップアップキャンバスのinitilization(sp?)を置くべきでしょうか?私は完全なコードは、ポップアップの完全な配置は、私が関数に行くたびに実行されると思っている。 – confused

関連する問題