質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

Q&A

解決済

1回答

2443閲覧

Python3 Tkinter ウィジェットの折りたたみ

person

総合スコア223

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Tkinter

Tkinterは、GUIツールキットである“Tk”をPythonから利用できるようにした標準ライブラリである。

0グッド

0クリップ

投稿2021/06/22 09:46

ボタンを押したときに
テキストボックスの表示と非表示を切り替えたいです。
(値や表示場所は保持しておきたい。)

現在はgrid_remove()とgrid()を自前のフラグで切り替えていますが、
他に良い実装方法があったら教えて下さい。

参考
Tkinter ウィジェットを非表示、復元、および削除する方法

Python

1import tkinter as tk 2 3def func(): 4 global grid_flag 5 if grid_flag: 6 entry.grid_remove() 7 grid_flag = False 8 button["text"] = "show" 9 else: 10 entry.grid() 11 grid_flag = True 12 button["text"] = "hide" 13 14win = tk.Tk() 15 16button = tk.Button(win, text="show", width=10, command=func) 17button.grid(row=0, column=0, sticky="nsew") 18 19sv = tk.StringVar() 20entry = tk.Entry(win) 21entry.grid(row=0, column=1, sticky="nsew") 22entry.grid_remove() 23grid_flag = False 24 25win.mainloop()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

値や表示場所は保持しておきたい。

grid_remove で正解です。grid_forget だとオプションが保存されません。

現在はgrid_remove()とgrid()を自前のフラグで切り替えていますが、

他に良い実装方法があったら教えて下さい。

フラグ管理を省きたいなら

python

1if entry in win.grid_slaves(): 2 ...

レイアウトは通常は、混在させたりしないので問題ないと思いますが、
表示・非表示ではなく、grid で管理されているかどうか、での判断になります。
(pack, place での管理リストは別にあります)

他の方法、候補は entry.winfo_width() での判断等(非表示時のサイズは 1)

投稿2021/06/22 10:12

編集2021/06/22 10:14
teamikl

総合スコア8664

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問