tk.OptionMenu
がCUSTOM
に相当する場合、次のコードは2つのtk.Entry
フィールドを表示します。 tk.OptionMenu
が選択された後にtk.Entry
フィールドが表示されないようにするには、CUSTOM
ではありません。例えばTkinter pack Entry Widgets OptionMenu値に基づいて、pack_forgetそれ以外の場合
をユーザーがドロップダウンからCUSTOM
を選択した場合、以下のコードは2つのフィールドが表示されますが、ユーザーが別のオプションを選択するために行く場合、私は、ビューから追加された2つのフィールドを削除し、CUSTOM
がある場合はそれらを再度表示したいですドロップダウンから再度選択します。ある意味で、それらを切り替えます。
私の研究は、pack_forget、は破壊、トレースを上げています。私はそれを把握していないようだ。
import tkinter as tk
root = tk.Tk()
frame = tk.Frame(root)
frame.pack()
def func(*args):
if date_var.get() == 'CUSTOM':
new_frame = tk.Frame(frame)
new_frame.pack(side=tk.LEFT)
field1 = tk.Entry(new_frame)
field2 = tk.Entry(new_frame)
field1.pack()
field2.pack()
else:
try:
new_frame.destroy()
except:
pass
date_var = tk.StringVar()
date_var.trace('w', func)
date_var.set('LAST_10_DAYS')
date_options = ['CUSTOM', 'LAST_10_DAYS', 'LAST_50_DAYS', 'LAST_10_MILLION_YEARS']
date = tk.OptionMenu(frame, date_var, *date_options)
date.pack(pady=10)
root.mainloop()
'pack_forget'または' destroy'を実行するとどうなりますか?私はあなたに誤りがあると思っています。それは何と言いますか?あなたはそれから何を学ぶことができますか? –
エラーは表示されません。上記のコードは 'CUSTOM'が選択されるたびに' field1'と 'field2'をパッキングしています。論理的には意味があります。私の理解の主な違い(tkinterには新しい)は操作の配置を理解することでした。私は仕事の解決策を得ました。私は今それを投稿します。ところで、あなたのコード例はここに非常に役立ちます。あなたの答えは、私がするすべてのtkinter検索で表示されます! – Jarad
実際にあなたのコードの前に例外がありました。この例外を「except例外e:print e」で 'except'に変更すると、例外メッセージが出力されます。 'new_frame'は関数にとってローカルでした。 – Ejaz