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

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

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

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

Tkinter

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

Q&A

1回答

617閲覧

tkinter 画面四つ端のボタンの設置

bo_ld

総合スコア0

Python 3.x

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

Tkinter

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

0グッド

0クリップ

投稿2022/09/17 16:42

質問

python、tkinterでGUIの作成を最近学習し始めました。
自身のPCの解像度を取得して画面の四つ端にボタンを設置しようと考えたのですが、1920x1080においてボタンが見切れます。
ボタン分の座標を上にずらせばきれいに配置できるのですが、別の解像度ではボタンが浮いてしまいます。
これ以外で何か対策があれば教えてください。

エラーは出ていません。

実行画面(左下)

イメージ説明

該当のソースコード

import tkinter as tk root = tk.Tk() monitor_height = root.winfo_screenheight() monitor_width = root.winfo_screenwidth() root.title("画面サイズを表示") root.geometry("%dx%d"%(monitor_width, monitor_height)) print("width x height = %d x %d (pixels)" %(monitor_width, monitor_height)) button1 =tk.Button(root,text='左上').place(anchor =tk.NW) button2 =tk.Button(root,text='右上').place(x=monitor_width,y=0,anchor =tk.NE) button3 =tk.Button(root,text='左下',).place(x=0,y=monitor_height,anchor=tk.SW) button4 = tk.Button(root,text='右下').place(x=monitor_width,y=monitor_height,anchor =tk.SE) root.mainloop()

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

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

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

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

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

bo_ld

2022/09/17 16:48

追記 1980x1080において× 自身のPCの解像度である1920x1080のウィンドウ表示において〇
meg_

2022/09/18 00:57

質問は編集できますので、この欄ではなく質問を直接編集された方が良いです。
meg_

2022/09/18 01:00

> 1920x1080においてボタンが見切れます。 画面を最大化したときの話でしょうか?
TakaiY

2022/09/18 01:52

「ボタン分の座標を上にずらせばきれいに配置できる」 ボタンの座標の指定は左上が基準なので、質問のコードではそうなるのが普通ですが、 「別の解像度ではボタンが浮いてしまいます」 というのがわかりません。 どういう状況でしょうか。 スクリーンショットなどで説明いただけますか。
teamikl

2022/09/20 10:08 編集

> ボタンの座標の指定は左上が基準なので、 省略時は左上が基準ですが、質問のコードではanchor指定がある為、 anchor で指定した位置が座標の基準になります。
guest

回答1

0

「ボタン分の座標を上にずらせばきれいに配置できる」

厳密には、ボタン分の座標ではなく「タイトルバーの高さ」です。
ボタンとタイトルバーの高さがほぼ同じの場合は、区別がつかないかもしれませんが、
ボタンのフォントサイズを変更する等して、ボタンの高さを変えてみると判別できるはずです。

理由は、screenheight で得られるのは画面のサイズですが、
座標 0, 0 はタイトルバーの下から始まる為、アプリケーションが利用できる領域は
画面サイズからタイトルバーを差し引いた分になります。
※タイトルバーの高さを所得する方法は提供されてません(プラットフォーム毎に方法が異なる為)
座標指定では画面下にタスクバー等を表示してる場合等も、別途調整が必要になる点に注意。

これ以外で何か対策があれば教えてください。

特別な理由が無ければ、
解像度の影響を受ける place での座標指定ではなく、
ウィンドウを最大化してgrid/pack 等の
レイアウトマネージャーに任せる方法をお勧めします。

投稿2022/09/20 10:07

teamikl

総合スコア8664

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問