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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

608閲覧

Python PySimpleGUIのCalendarButtonを押下してもカレンダーが表示されない(複数画面遷移のプログラム)

sencho

総合スコア4

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2023/02/26 18:09

実現したいこと

PythonのPySimpleGUIを使って5画面を遷移するプログラムを作ろうと思っています。
PySimpleGUIにてCalendarButtonを配置したのですがボタン自体は表示されていますが、押してもカレンダーが出てきません。

  • 当該ボタンを押下した際にカレンダーが表示されるようにしたい。

前提

PythonのPySimpleGUIを使って5画面を遷移し、
ユーザーに情報入力を求め、Excelに表示させるプログラムを作成しています。
その中で日付入力の部分でPySimpleGUIのCalendarButtonを配置したのですが、ボタンを押しても
カレンダーが画面に表示されません。
いろいろと試してみましたが初心者のため、原因がわからず、どこを触ったらいいかわからなくなってしまいました。

1画面のシンプルなプログラムではカレンダーも表示され、情報も取得できることを確認しています。

ざっくりとした質問で大変恐縮ですが、
コードのどの部分をどのように修正すれば解決するのでしょうか?

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

エラーメッセージ自体は発生していません。CalendarButtonを押下してもカレンダーが出現しない状態です。

該当のソースコード

Python

1from datetime import datetime 2import PySimpleGUI as sg 3import func as fc 4import locale 5########################################## 6#要素の準備 7########################################## 8#1つ目のウィンドウの要素の準備 9text1 = "事業年度と航海数を選択してボタンを押下してください" 10text2 = "事業年度:" 11combo1_values = fc.getTermList() 12combo1_default_value = fc.getLastTerm() 13text3 = "航海数:" 14combo2_values = list(range(1,251)) 15combo2_default_value = fc.getLastVoyageNum() 16#2つ目のウィンドウの要素の準備 17locale.setlocale(locale.LC_ALL, 'ja_JP.UTF-8') 18combo3_values = fc.getPontoonList() 19combo4_values = fc.getProductList() 20 21########################################## 22#レイアウト 23########################################## 24# 1つ目のウィンドウのレイアウト 25layout1 = [ 26 [sg.Text(text1),], 27 [sg.Text(text2), sg.Combo(combo1_values,readonly=True,default_value=combo1_default_value,key='-TERM-'), sg.Text(text3), sg.Combo(combo2_values,readonly=True,default_value=combo2_default_value,key='-VOYAGE-')], 28 [sg.Button("航海履歴",key='-HISTORY-'), sg.Button("一時保存",key='-SAVE-'), sg.Column([], size=(50, 1)), sg.Button("閉じる",key='-CLOSE-'), sg.Button("次へ",key='-NEXT-')] 29] 30 31# 2つ目のウィンドウのレイアウト 32row1 = [ 33 sg.Text("朝練フラグ"), 34 sg.Checkbox("", key="-MORNINGCALLFLG-"), 35 sg.Text("台船フラグ"), 36 sg.Checkbox("", key="-PONTOONFLG-"), 37 sg.Text("台船名:"), 38 sg.Combo(combo3_values, key="-PONTOON-",readonly=True), 39] 40 41row2 = [ 42 sg.Text("積日付:"), 43 sg.CalendarButton("日付選択", target="-LOADDATE-", format="%Y年%m月%d日"), 44 sg.Input(key="-LOADDATE-", enable_events=True), 45 sg.Text("品名:"), 46 sg.Combo(combo4_values, key="-PRODUCT-"), 47] 48 49row3 = [ 50 sg.Text("揚日付:"), 51 sg.Input(key="-DATE2-"), 52 sg.Text("予定数量:"), 53 sg.Input(key="-QTY-"), 54 sg.Radio("M/T", group_id="shipping_type", key="-MT-"), 55 sg.Radio("K/L", group_id="shipping_type", key="-KL-"), 56] 57 58row4 = [ 59 sg.Text("積港:"), 60 sg.Combo(["港1", "港2"], key="-COMBO5-"), 61 sg.Text("積場所:"), 62 sg.Combo(["場所1", "場所2"], key="-COMBO6-"), 63 sg.Text("積バース:"), 64 sg.Combo(["バース1", "バース2"], key="-COMBO7-"), 65 sg.Text("積代理店:"), 66 sg.Combo(["代理店1", "代理店2"], key="-COMBO8-"), 67] 68 69row5 = [ 70 sg.Text("揚港:"), 71 sg.Combo(["港1", "港2"], key="-COMBO9-"), 72 sg.Text("揚場所:"), 73 sg.Combo(["場所1", "場所2"], key="-COMBO10-"), 74 sg.Text("揚バース:"), 75 sg.Combo(["バース1", "バース2"], key="-COMBO11-"), 76 sg.Text("揚代理店:"), 77 sg.Combo(["代理店1", "代理店2"], key="-COMBO12-"), 78] 79 80row6 = [ 81 sg.Button("前へ",key= '-BACK-'), 82 sg.Button("次へ"), 83] 84 85layout2 = [ 86 row1, 87 row2, 88 row3, 89 row4, 90 row5, 91 row6, 92] 93 94# 3つ目のウィンドウのレイアウト 95layout3 = [[sg.Text('3つ目のウィンドウ')], 96 [sg.Button('前へ'), sg.Button('次へ')]] 97 98# 4つ目のウィンドウのレイアウト 99layout4 = [[sg.Text('4つ目のウィンドウ')], 100 [sg.Button('前へ'), sg.Button('次へ')]] 101 102# 5つ目のウィンドウのレイアウト 103layout5 = [[sg.Text('5つ目のウィンドウ')], 104 [sg.Button('前へ'), sg.Button('閉じる')]] 105 106# ウィンドウの作成 107window1 = sg.Window('航海数選択【荷役計画1/5】', layout1, finalize=True) 108window2 = sg.Window('積荷役計画【荷役計画2/5】', layout2, finalize=True) 109window2.hide() # 最初はwindow2を非表示にする 110window3 = sg.Window('積荷役協定【荷役計画3/5】', layout3, finalize=True) 111window3.hide() # 最初はwindow3を非表示にする 112window4 = sg.Window('揚荷役計画【荷役計画4/5】', layout4, finalize=True) 113window4.hide() # 最初はwindow4を非表示にする 114window5 = sg.Window('揚荷役計画【荷役計画5/5】', layout5, finalize=True) 115window5.hide() # 最初はwindow5を非表示にする 116 117while True: 118 window, event, values = sg.read_all_windows() # イベントを待機 119 print('イベント:',event,',値:',values) 120 if event == sg.WIN_CLOSED or event == '-CLOSE-': 121 break 122 elif event == '-HISTORY-' and window == window1: 123 fc.openHistory() 124 elif event == '-SAVE-' and window == window1: 125 fc.saveWindow1(values) 126 elif event == '-NEXT-' and window == window1: 127 window1.hide() # 1つ目のウィンドウを非表示にする 128 window2.un_hide() # 2つ目のウィンドウを表示する 129 elif event == "-LOADDATE-" and window == window2: 130 print(f"選択された日付: {values['-LOADDATE-']}") 131 elif event == '-BACK-' and window == window2: 132 window2.hide() # 2つ目のウィンドウを非表示にする 133 window1.un_hide() # 1つ目のウィンドウを再表示する 134 elif event == '-NEXT-' and window == window2: 135 window2.hide() # 2つ目のウィンドウを非表示にする 136 window3.un_hide() # 3つ目のウィンドウを表示する 137 elif event == '-BACK-' and window == window3: 138 window3.hide() # 3つ目のウィンドウを非表示にする 139 window2.un_hide() # 2つ目のウィンドウを表示する 140 elif event == '-NEXT-' and window == window3: 141 window3.hide() # 3つ目のウィンドウを非表示にする 142 window4.un_hide() # 4つ目のウィンドウを表示する 143 elif event == '-BACK-' and window == window4: 144 window4.hide() # 4つ目のウィンドウを非表示にする 145 window3.un_hide() # 3つ目のウィンドウを表示する 146 elif event == '-NEXT-' and window == window4: 147 window4.hide() # 4つ目のウィンドウを非表示にする 148 window5.un_hide() # 5つ目のウィンドウを表示する 149 elif event == '-BACK-' and window == window5: 150 window5.hide() # 4つ目のウィンドウを非表示にする 151 window4.un_hide() # 5つ目のウィンドウを表示する

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

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

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

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

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

melian

2023/02/27 13:04

本題について、issue として報告されています。どうやら現在でも修正が行われていない様で、最後の方に対処方法が記載されています。 [Bug] sg.CalendarButton not working under sg.read_all_windows · Issue #3890 · PySimpleGUI/PySimpleGUI https://github.com/PySimpleGUI/PySimpleGUI/issues/3890
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問