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

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

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

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

Tkinter

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

Q&A

解決済

1回答

311閲覧

tkinterの縦並びの方法

kirinriki_to

総合スコア2

Python 3.x

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

Tkinter

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

0グッド

0クリップ

投稿2023/05/24 05:55

実現したいこと

pythonのtkinterを使用してwidgetを縦並びにしたい

前提

最終的なレイアウトとしては以下の通り表示したいです。

1、2を縦並びとしたい
1、ボタン、ボタン(横並び)
2、ラベル、テキストボックス、ラベル、テキストボックス(横並び)

ご教授宜しくお願いいたします。

発生している問題・エラーメッセージ

1、2が横並びとなってしまいます。

該当のソースコード

# ボタンのおまとめウィジェット self.button_container = tk.Frame(self) self.button_container.pack(side=tk.TOP, anchor=tk.N) # ボタンを横並びに配置 self.main_button_emergency.pack(side=tk.LEFT, padx=5) self.main_button_announcement.pack(side=tk.LEFT, padx=5) # ラベル、テキストのおまとめウィジェット self.widget_frame = tk.Frame(self) self.widget_frame.pack(side=tk.TOP, anchor=tk.W) # ラベル、テキストボックスを横並びに配置 self.main_label_inputter.pack(side=tk.LEFT, padx=5) self.main_inputterBox.pack(side=tk.LEFT, padx=5) self.main_label_division.pack(side=tk.LEFT, padx=5) self.main_divisionBox.pack(side=tk.LEFT, padx=5)

試したこと

□親要素を明示的に定義

self.main_button_announcement.pack(side=tk.LEFT, padx=5, in_=self.button_container)

→縦並びとならず内部のウィジェットが表示されなくなってしまった。

□button_containerとwidget_frameの親要素を作成する。

container = tk.Frame(self) container.pack() # ボタンのおまとめウィジェット button_container = tk.Frame(self) button_container.pack(side=tk.TOP, anchor=tk.N) # ボタンを横並びに配置 self.main_button_emergency.pack(side=tk.LEFT, padx=5, in_=button_container) self.main_button_announcement.pack(side=tk.LEFT, padx=5, in_=button_container) # ラベル、テキストのおまとめウィジェット widget_frame = tk.Frame(self) widget_frame.pack(side=tk.TOP, anchor=tk.W) # ラベル、テキストボックスを横並びに配置 self.main_label_inputter.pack(side=tk.LEFT, padx=5, in_=widget_frame) self.main_inputterBox.pack(side=tk.LEFT, padx=5, in_=widget_frame) self.main_label_division.pack(side=tk.LEFT, padx=5, in_=widget_frame) self.main_divisionBox.pack(side=tk.LEFT, padx=5, in_=widget_frame)

button_containerとwidget_frameは縦並びになったが、内部のウィジェットが表示されなくなってしまった。

補足情報(FW/ツールのバージョンなど)

windows11 VSCode python3.11

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。

各ウィジェットの定義時に、それぞれのおまとめに定義していなかったからでした。

修正後

# ラベルの定義 self.main_label_inputter = Label(widget_frame, text=conf.get('SCREEN_MESSAGE', 'INPUTTER'), font=(conf.get('BUTTON', 'BUTTON_FONT'), 18))

お騒がせしました。

投稿2023/05/24 06:20

kirinriki_to

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問