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

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

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

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

Q&A

解決済

1回答

3127閲覧

python pysimplegui windowの遷移を行う場合、前のwindowと同じディスプレイの位置で開きたい

matsutai

総合スコア53

Python 3.x

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

0グッド

0クリップ

投稿2022/10/22 13:54

前提

pysimpleguiを使っています。
windowの遷移を行う場合、前のwindowと同じディスプレイの位置で開きたいですが、設定方法を教えていただきたいです。

該当のソースコード

python

1実現したい動作は、 2下記のようにwindowの関数を設定して、「進む」、「戻る」で画面遷移を行う場合、 3windowをマウスでつかんでディスプレイ上の位置を移動してから、次のwindowを開いた場合に、 4移動した場所で、次のwindowを開くように設定したいですが、もとの場所で開いてしまいます。 5 6設定方法、引数等を調べてみているのですが、出てきませんでした。 7どなたか教えていただけないでしょうか? 8 9def window1() : 10 layout = [ 11 [sg.Text('window1')], 12 [sg.Button('進む',key='button_go')] 13 ] 14 window = sg.Window('window1', layout, grab_anywhere=True) 15 while True: 16 event, values = window.read() 17 if event == sg.WIN_CLOSED: 18 break 19 if event == 'button_go': 20 window.close() 21 window2() 22 break 23 window.close() 24 25def window2() : 26 layout = [ 27 [sg.Text('window2')], 28 [sg.Button('戻る',key='button_return')] 29 ] 30 window = sg.Window('window2',layout, grab_anywhere=True) 31 while True: 32 event, values = window.read() 33 if event == sg.WIN_CLOSED: 34 break 35 if event == 'button_return': 36 window.close() 37 window2() 38 break 39 window.close() 40 41window1() 42 43

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

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

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

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

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

guest

回答1

0

ベストアンサー

PySimpleGUI の Demo に同様のものがあります。

https://github.com/PySimpleGUI/PySimpleGUI/blob/master/DemoPrograms/Demo_Auto_Save_Window_Position.py

終了時に前回の位置 location を記録するというものですが、
ウィンドウを閉じたときとすれば適応できるはずです。

注意点: Demo はプログラムを終了して、次に起動した時に同じ位置で開くというものなので、
user_settings は外部にファイルを生成します。
記録する必要がなければ、変数に保持するようにもできます。

  • (close 前に) window.current_location() で現在位置を所得
  • sg.Window の location で初期位置を指定

投稿2022/10/24 07:10

teamikl

総合スコア8664

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

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

matsutai

2022/10/24 12:48

回答ありがとうございます。 質問させてください。 window.current_location() を window.close() の前に入れてみました。 window = sg.Window(location=  としようと思いますが、 location= 以下、どのように 初期位置を指定したらよいか教えていただけないでしょうか? よくわかっておらず申し訳ありません。 よろしくお願いします。
teamikl

2022/10/24 16:47

閉じる前に変数に記録しておきます prev_location = window.current_location() 新規作成時にlocationを指定 window = sg.Window(..., location=prev_location)
matsutai

2022/10/25 01:23

ありがとうございます。 いただいた方法で実装してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問