実現したいこと
PySimpleGUIのウィンドウの文字が真っ黒になるので、改善したいです。
前提
windows11+python3+OpenCV+PySimpleGUIで写真を撮影して表示するプログラムを作成しようとしている初心者です。
USBカメラの起動設定処理等に約17秒の時間がかかるので、その間に「ソフト起動中」の表示をしようしています。
発生している問題・エラーメッセージ
次の処理を調べ、組み込もうとしましたが、下記コードだけで動作させても、プログラムに組み込んでも、文字部分が真っ黒になります。
エラーメッセージは、出ません。
該当のソースコード
import PySimpleGUI as sg
import time
ウィンドウのレイアウトを定義
layout = [[sg.Text('ソフト起動中', font=('Helvetica', 20), justification='center')]]
タイトルバー無しのウィンドウを作成
window = sg.Window('Window Title', layout, no_titlebar=True, keep_on_top=True, finalize=True)
ウィンドウを中央に配置
window.TKroot.geometry("+%d+%d" % (window.TKroot.winfo_screenwidth() / 2 - window.TKroot.winfo_reqwidth() / 2,
window.TKroot.winfo_screenheight() / 2 - window.TKroot.winfo_reqheight() / 2))
ウィンドウを5秒間表示
time.sleep(5)
ウィンドウを閉じる
window.close()
試したこと
フォントを変えてみても真っ黒で変わりませんでした。
下記のように一部修正し、点滅表示にしてみると、真っ黒になりませんし、点滅後に表示したままにできないことはなかったのですが、起動中に点滅処理はできませんし、できるだけシンプルなプログラムにしたいと考え、点滅後に表示したままにするという方法はとりたくありません。
テキストを点滅表示するためのフラグ
flag = True
ウィンドウを5秒間表示
start_time = time.time()
while time.time() - start_time < 5:
event, values = window.read(timeout=100)
if event == sg.WIN_CLOSED:
break
テキストの表示を切り替える
if flag:
window['text'].update(visible=False)
flag = False
else:
window['text'].update(visible=True)
flag = True
更に試行錯誤してみて、なぜかwindow.readを入れると文字が黒くならなくなる、対処療法ができました。
import PySimpleGUI as sg
import time
起動中ウィンドウのレイアウトを定義
sg.theme('LightGreen') # 画面の配色テーマ
layout = [[sg.Text('検査ソフト起動中', font=('Helvetica', 20), justification='center')]]
タイトルバー無しの起動中ウィンドウを作成
window = sg.Window('Window Title', layout, no_titlebar=True, keep_on_top=True, finalize=True)
event, values = window.read(timeout=100)
time.sleep(5)
ウィンドウを閉じる
window0.close()
ウィンドウが小さいので、レイアウトで上下にスペースを入れて広げると、また文字が真っ黒になりました。
補足情報(FW/ツールのバージョンなど)
windows11
VSCode 1.81.1
python3.11.4
opencv-python 4.7.0.72
PySimpleGUI 4.60.5

回答1件
あなたの回答
tips
プレビュー