見出し画像

ウィンドウが縮む問題:完全解決

(Python学習初心者の試行錯誤・備忘録です)
グラフ表示のウィンドウと、制御用のウィンドウを分けた場合に関して

を書きました。最初に「一瞬」グラフを表示させると言う、あやしいことをやって対策をしたのですが、カッコ悪い。

・ウィンドウを別にするのではない「埋め込み式」の場合は、こちらのbear_montblanc(Be4rR)様の

のコードを試してうまく行きました。
この記事のソースコードの中に

# GUIがぼやける現象を防ぐための関数
def make_dpi_aware():
  import ctypes
  import platform
  if int(platform.release()) >= 8:
    ctypes.windll.shcore.SetProcessDpiAwareness(True)
make_dpi_aware()

という記述がありますが、「ぼやける」というのは当方が「縮む」と表現したのと同じ現象かも?サイズを変えないと「ぼやけ」るし、解像度を変えないと「縮む」のではないか? と予想したところどうやらその通りだったようで、このmake_dpi_aware() 関数を置いたらウィンドウをわけた場合でも完全に問題解決しました。

縮む問題が再現してしまうコード

import PySimpleGUI as sg
import matplotlib.pyplot as plt

def graph_show():
    plt.title("グラフ", fontname="MS Gothic")
    plt.show()

layout = [
    [sg.Text("コントロール",size=(40,1))],
    [sg.Button("show")]
]

window = sg.Window("PySimpleGUI-matplotlib連携テスト",layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED :
        break
    elif event == "show":
        graph_show()
window.close()

縮む問題が解決したコード

import PySimpleGUI as sg
import matplotlib.pyplot as plt

# GUIがぼやける現象を防ぐための関数
def make_dpi_aware():
  import ctypes
  import platform
  if int(platform.release()) >= 8:
    ctypes.windll.shcore.SetProcessDpiAwareness(True)
make_dpi_aware()

def graph_show():
    plt.title("グラフ", fontname="MS Gothic")
    plt.show()

layout = [
    [sg.Text("コントロール",size=(40,1))],
    [sg.Button("show")]
]

window = sg.Window("PySimpleGUI-matplotlib連携テスト",layout)

while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED :
        break
    elif event == "show":
        graph_show()
window.close()

コードを公開してくださっている bear_montblanc(Be4rR)様、
情報およびアドバイスをくださった、すうち様
大変ありがとうございました。

(追記 2024年4月27日)
「GUIがぼやける現象を防ぐための関数」が何をやっているのか?Copilotに聞いた結果を追記しておきます。

この記事が気に入ったらサポートをしてみませんか?