質問編集履歴
14
更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
### 該当のソースコード
|
20
20
|
|
21
|
-
``python
|
21
|
+
```python
|
22
22
|
import PySimpleGUI as sg
|
23
23
|
sg.theme("DarkAmber")
|
24
24
|
|
13
更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -28,9 +28,6 @@
|
|
28
28
|
#2つ目のウィンドウの要素の準備
|
29
29
|
|
30
30
|
#レイアウト
|
31
|
-
|
32
|
-
|
33
|
-
# 1つ目のウィンドウのレイアウト
|
34
31
|
layout1 = [
|
35
32
|
[sg.Text(text1)],[sg.Text("メニュー")],
|
36
33
|
[sg.Checkbox("カレー420円",key="-menu1-")],
|
@@ -50,7 +47,6 @@
|
|
50
47
|
window2 = sg.Window('確認画面', layout2, finalize=True, size=(300,250))
|
51
48
|
window2.hide() # 最初はwindow2を非表示にする
|
52
49
|
|
53
|
-
# 3つ目のウィンドウのレイアウト
|
54
50
|
layout3 = [
|
55
51
|
[sg.Text('人数確認')],
|
56
52
|
[sg.Button('一人',key= '-SKIP1-'),sg.T(" "),sg.Button('複数人',key= '-NEXT-')],
|
@@ -60,7 +56,6 @@
|
|
60
56
|
window3 = sg.Window('人数確認', layout3, finalize=True, size=(300,250))
|
61
57
|
window3.hide() # 最初はwindow3を非表示にする
|
62
58
|
|
63
|
-
# 4つ目のウィンドウのレイアウト
|
64
59
|
layout4 = [
|
65
60
|
[sg.T("人数を入力してください")],
|
66
61
|
[sg.T("金額"),sg.T("",key='act')],
|
@@ -71,7 +66,6 @@
|
|
71
66
|
window4 = sg.Window('お会計', layout4, finalize=True, size=(300,250))
|
72
67
|
window4.hide() # 最初はwindow4を非表示にする
|
73
68
|
|
74
|
-
# 5つ目のウィンドウのレイアウト
|
75
69
|
layout5 = [
|
76
70
|
[sg.T("合計で")],[sg.T("0",key='act')],[sg.T("円の支払いが完了しました。")],
|
77
71
|
[sg.T("ありがとうございました。")],
|
12
すべて変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,154 +1,148 @@
|
|
1
|
-
---
|
2
|
-
学校にあった食券販売機みたいなものをPySimpleGUIチェックボックス形式にして作ってみたいのですが、画面転移させる時に5画面の処理はできたのですがここからどうやってチェックボックスがTrueのものだけ料金を加算するようにできるかがわかりません。なんとかなりませんか?
|
3
|
-
- 画面1でメニュー表示(チェックボックス形式)
|
4
|
-
- メニューはカレー420円、ラーメン450円、うどん400円、蕎麦400円、それぞれ大盛りはプラス70円
|
5
|
-
|
1
|
+
### 実現したいこと
|
6
|
-
- 画面3で人数の確認(1人だったらそのまま会計へ、複数だったら割り勘をさせる。割り勘のためのGUIはもう作成済み)
|
7
2
|
|
3
|
+
お会計の割り勘機能付きver機能を動かす
|
4
|
+
|
5
|
+
### 前提
|
6
|
+
|
8
|
-
|
7
|
+
pythonのpysimpleguiで会計機を作っています。
|
8
|
+
割り勘の機能を実装中に以下のエラーメッセージが発生しました。
|
9
|
+
|
10
|
+
### 発生している問題・エラーメッセージ
|
11
|
+
|
12
|
+
```
|
13
|
+
raceback (most recent call last):
|
14
|
+
File "E:\割り勘機能付きお会計計算機(割り勘機能バグ利中).py", line 112, in <module>
|
15
|
+
txt = "1人あたり" + str(A / B) + "円となります。"
|
16
|
+
TypeError: unsupported operand type(s) for /: 'int' and 'str'
|
17
|
+
```
|
18
|
+
|
19
|
+
### 該当のソースコード
|
20
|
+
|
21
|
+
``python
|
22
|
+
import PySimpleGUI as sg
|
23
|
+
sg.theme("DarkAmber")
|
24
|
+
|
25
|
+
#要素の準備
|
26
|
+
#1つ目のウィンドウの要素の準備
|
27
|
+
text1 = "注文を選択"
|
28
|
+
#2つ目のウィンドウの要素の準備
|
29
|
+
|
30
|
+
#レイアウト
|
9
31
|
|
10
32
|
|
11
|
-
```
|
12
|
-
import PySimpleGUI as sg
|
13
|
-
#要素の準備
|
14
|
-
#1つ目のウィンドウの要素の準備
|
15
|
-
text1 = "注文を選択"
|
16
|
-
#2つ目のウィンドウの要素の準備
|
17
|
-
menu = {
|
18
|
-
'-menu1-': 'カレー',
|
19
|
-
'-menu2-': 'ラーメン',
|
20
|
-
'-menu3-': 'うどん',
|
21
|
-
'-menu4-':'蕎麦'
|
22
|
-
}
|
23
|
-
|
24
|
-
|
25
|
-
#レイアウト
|
26
|
-
|
27
|
-
|
28
|
-
# 1つ目のウィンドウのレイアウト
|
33
|
+
# 1つ目のウィンドウのレイアウト
|
29
|
-
layout1 = [
|
34
|
+
layout1 = [
|
30
|
-
[sg.Text(text1)],
|
31
|
-
|
32
|
-
|
33
|
-
[sg.Text("メニュー")],
|
35
|
+
[sg.Text(text1)],[sg.Text("メニュー")],
|
34
|
-
[sg.Checkbox("カレー420円",key="-menu1-")],
|
36
|
+
[sg.Checkbox("カレー420円",key="-menu1-")],
|
35
|
-
|
36
|
-
[sg.Checkbox("ラーメン450円",key="-menu2-")],
|
37
|
+
[sg.Checkbox("ラーメン450円",key="-menu2-")],
|
37
|
-
|
38
|
-
[sg.Checkbox("うどん400円",key="-menu3-")],
|
38
|
+
[sg.Checkbox("うどん400円",key="-menu3-")],
|
39
|
-
|
40
|
-
|
41
|
-
[sg.Checkbox("蕎麦400円",key="-menu4-")],
|
39
|
+
[sg.Checkbox("蕎麦400円",key="-menu4-")],
|
42
|
-
|
43
|
-
|
44
|
-
[sg.Button("閉じる",key='-CLOSE-'), sg.Button("次へ",key='-NEXT-')]
|
40
|
+
[sg.Button("閉じる",key='-CLOSE-'), sg.Button("次へ",key='-NEXT-')]
|
45
|
-
|
46
|
-
|
47
|
-
# 2つ目のウィンドウのレイアウト
|
48
|
-
row1 = [
|
49
|
-
txt = 'ご注文は'
|
50
|
-
for key in menu.keys():
|
51
|
-
if value[key] == True:
|
52
|
-
if firstloop:
|
53
|
-
txt = txt + menu[key]
|
54
|
-
firstloop = False
|
55
|
-
else:
|
56
|
-
txt = txt + 'と' + menu[key]
|
57
|
-
|
58
|
-
|
59
|
-
txt = txt + 'です。よろしいですか?'
|
60
|
-
if firstloop:
|
61
|
-
message = '何か選択してください'
|
62
|
-
sg.popup(message)
|
63
|
-
break
|
64
|
-
|
65
|
-
|
66
|
-
elif event is None:
|
67
|
-
break
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
]
|
41
|
+
]
|
72
|
-
|
73
|
-
|
74
|
-
row2 = [
|
75
|
-
sg.Button("前へ",key= '-BACK-'),
|
76
|
-
sg.Button("次へ"),
|
77
|
-
]
|
78
|
-
|
79
|
-
|
80
|
-
layout2 = [
|
81
|
-
row1,
|
82
|
-
row2,
|
83
|
-
]
|
84
|
-
|
85
|
-
|
86
|
-
# 3つ目のウィンドウのレイアウト
|
87
|
-
layout3 = [[sg.Text('人数確認')],
|
88
|
-
#←ここに割り勘の時の人数のやつを入れる
|
89
|
-
[sg.Button('前へ'), sg.Button('次へ')]]
|
90
|
-
|
91
|
-
|
92
|
-
# 4つ目のウィンドウのレイアウト
|
93
|
-
layout4 = [[sg.Text('4つ目のウィンドウ')],
|
94
|
-
[sg.Button('前へ'), sg.Button('次へ')]]
|
95
|
-
|
96
|
-
|
97
|
-
# 5つ目のウィンドウのレイアウト
|
98
|
-
layout5 = [[sg.Text('5つ目のウィンドウ')],
|
99
|
-
[sg.Button('前へ'), sg.Button('閉じる')]]
|
100
|
-
|
101
|
-
|
102
|
-
# ウィンドウの作成
|
103
|
-
window1 = sg.Window('メニュー画面', layout1, finalize=True)
|
42
|
+
window1 = sg.Window('メニュー画面', layout1, finalize=True, size=(300,250))
|
104
|
-
window2 = sg.Window('確認画面', layout2, finalize=True)
|
105
|
-
window2.hide() # 最初はwindow2を非表示にする
|
106
|
-
window3 = sg.Window('人数確認', layout3, finalize=True)
|
107
|
-
window3.hide() # 最初はwindow3を非表示にする
|
108
|
-
window4 = sg.Window('お会計', layout4, finalize=True)
|
109
|
-
window4.hide() # 最初はwindow4を非表示にする
|
110
|
-
window5 = sg.Window('会計完了', layout5, finalize=True)
|
111
|
-
window5.hide() # 最初はwindow5を非表示にする
|
112
|
-
|
113
|
-
|
114
|
-
while True:
|
115
|
-
window, event, values = sg.read_all_windows() # イベントを待機
|
116
|
-
print('イベント:',event,',値:',values)
|
117
|
-
if event == sg.WIN_CLOSED or event == '-CLOSE-':
|
118
|
-
break
|
119
|
-
elif event == '-NEXT-' and window == window1:
|
120
|
-
window1.hide()
|
121
|
-
window2.un_hide()
|
122
|
-
elif event == '-BACK-' and window == window2:
|
123
|
-
window2.hide()
|
124
|
-
window1.un_hide()
|
125
|
-
elif event == '-NEXT-' and window == window2:
|
126
|
-
window2.hide()
|
127
|
-
window3.un_hide()
|
128
|
-
elif event == '-BACK-' and window == window3:
|
129
|
-
window3.hide()
|
130
|
-
window2.un_hide()
|
131
|
-
elif event == '-NEXT-' and window == window3:
|
132
|
-
window3.hide()
|
133
|
-
window4.un_hide()
|
134
|
-
elif event == '-BACK-' and window == window4:
|
135
|
-
window4.hide()
|
136
|
-
window3.un_hide()
|
137
|
-
elif event == '-NEXT-' and window == window4:
|
138
|
-
window4.hide()
|
139
|
-
window5.un_hide()
|
140
|
-
elif event == '-BACK-' and window == window5:
|
141
|
-
window5.hide()
|
142
|
-
window4.un_hide()
|
143
|
-
|
144
|
-
```(Python)
|
145
43
|
|
146
44
|
|
45
|
+
layout2 = [
|
46
|
+
[sg.T("合計で")],[sg.T("",key='act')],[sg.T("円となります。")],
|
47
|
+
[sg.T("よろしいですか?")],
|
48
|
+
[sg.Button("前へ",key= '-BACK-'),sg.T(" "),sg.Button("次へ",key='-NEXT-')],
|
49
|
+
]
|
50
|
+
window2 = sg.Window('確認画面', layout2, finalize=True, size=(300,250))
|
51
|
+
window2.hide() # 最初はwindow2を非表示にする
|
52
|
+
|
53
|
+
# 3つ目のウィンドウのレイアウト
|
54
|
+
layout3 = [
|
55
|
+
[sg.Text('人数確認')],
|
56
|
+
[sg.Button('一人',key= '-SKIP1-'),sg.T(" "),sg.Button('複数人',key= '-NEXT-')],
|
57
|
+
[sg.T(" ")],
|
58
|
+
[sg.Button('前へ',key= '-BACK-')]
|
59
|
+
]
|
60
|
+
window3 = sg.Window('人数確認', layout3, finalize=True, size=(300,250))
|
61
|
+
window3.hide() # 最初はwindow3を非表示にする
|
62
|
+
|
63
|
+
# 4つ目のウィンドウのレイアウト
|
64
|
+
layout4 = [
|
65
|
+
[sg.T("人数を入力してください")],
|
66
|
+
[sg.T("金額"),sg.T("",key='act')],
|
67
|
+
[sg.T("人数"),sg.I("1", k='intB')],
|
68
|
+
[sg.Text('割り勘')],
|
69
|
+
[sg.Button('前へ',key= '-BACK-'), sg.Button('次へ',key='-NEXT-')]
|
70
|
+
]
|
71
|
+
window4 = sg.Window('お会計', layout4, finalize=True, size=(300,250))
|
72
|
+
window4.hide() # 最初はwindow4を非表示にする
|
73
|
+
|
74
|
+
# 5つ目のウィンドウのレイアウト
|
75
|
+
layout5 = [
|
76
|
+
[sg.T("合計で")],[sg.T("0",key='act')],[sg.T("円の支払いが完了しました。")],
|
77
|
+
[sg.T("ありがとうございました。")],
|
147
|
-
|
78
|
+
[sg.Button('前へ',key= '-BACK-'), sg.Button('閉じる',key='-CLOSE-')],
|
148
|
-
|
79
|
+
[sg.T("閉じる操作ができていませんが一応閉じた判定になっています。")],
|
80
|
+
]
|
149
|
-
|
81
|
+
window5 = sg.Window('会計完了', layout5, finalize=True, size=(500,250))
|
82
|
+
window5.hide() # 最初はwindow5を非表示にする
|
150
83
|
|
151
84
|
|
85
|
+
while True:
|
86
|
+
window, event, values = sg.read_all_windows() # イベントを待機
|
87
|
+
print('イベント:',event,',値:',values)
|
88
|
+
if event == None or sg.WIN_CLOSED or event == '-CLOSE-':
|
89
|
+
break
|
90
|
+
elif event == '-NEXT-' and window == window1:
|
91
|
+
window1.hide()
|
92
|
+
window2.un_hide()
|
93
|
+
i1 = 420
|
94
|
+
i2 = 450
|
95
|
+
i3 = 400
|
96
|
+
i4 = 400
|
97
|
+
total = 0
|
98
|
+
if values['-menu1-'] == True:
|
99
|
+
total += i1
|
100
|
+
if values['-menu2-'] == True:
|
101
|
+
total += i2
|
102
|
+
if values['-menu3-'] == True:
|
103
|
+
total += i3
|
104
|
+
if values['-menu4-'] == True:
|
105
|
+
total += i4
|
106
|
+
print(total)
|
107
|
+
window2['act'].update(total)
|
108
|
+
window4['act'].update(total)
|
109
|
+
window5['act'].update(total)
|
110
|
+
elif event == '-BACK-' and window == window2:
|
111
|
+
window2.hide()
|
112
|
+
window1.un_hide()
|
113
|
+
elif event == '-NEXT-' and window == window2:
|
114
|
+
window2.hide()
|
115
|
+
window3.un_hide()
|
116
|
+
elif event == '-BACK-' and window == window3:
|
117
|
+
window3.hide()
|
118
|
+
window2.un_hide()
|
119
|
+
elif event == '-NEXT-' and window == window3:
|
120
|
+
window3.hide()
|
121
|
+
window4.un_hide()
|
122
|
+
elif event == '-SKIP1-' and window == window3:
|
123
|
+
window3.hide()
|
124
|
+
window5.un_hide()
|
125
|
+
elif event == '-BACK-' and window == window4:
|
126
|
+
window4.hide()
|
127
|
+
window3.un_hide()
|
128
|
+
elif event == '-NEXT-' and window == window4:
|
129
|
+
window4.hide()
|
130
|
+
window5.un_hide()
|
131
|
+
A = float(total)
|
132
|
+
B = float('intB')
|
133
|
+
txt = "1人あたり" + str(A / B) + "円となります。"
|
134
|
+
window5["txt"].update(txt)
|
135
|
+
elif event == '-BACK-' and window == window5:
|
136
|
+
window5.hide()
|
137
|
+
window4.un_hide()
|
152
138
|
|
139
|
+
```
|
153
140
|
|
154
|
-
|
141
|
+
### 試したこと
|
142
|
+
|
143
|
+
最初はfloatを使っていなかったのでこうすることで割り算を試みましたが失敗しました。
|
144
|
+
調べながらやりましたがここだけはどうにもなりませんでした。sg.Iで指定された人数で、金額を割らせる処理方法がわかりません。教えてください。
|
145
|
+
### 補足情報(FW/ツールのバージョンなど)
|
146
|
+
python3.10.4
|
147
|
+
pysimplegui縛り
|
148
|
+
|
11
訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -147,4 +147,8 @@
|
|
147
147
|
毎度毎度不備ばかりですみませんでした。https://qiita.com/tako_wasabi/questions/0dbcdc232f8c73ad7dec
|
148
148
|
出来るだけ早く多くの意見を得るためにこちらにも質問を投稿させていただいています。
|
149
149
|
「2つ目のウィンドウのレイアウト」が動かないコードだというご指摘がありましたがそこも含めて調べながら頑張った結果です。いくら調べても料金を選択したものに対応させるものに類似するものがなかったため未完成品を提出せざるを得ませんでした。
|
150
|
+
|
151
|
+
|
152
|
+
|
153
|
+
|
150
154
|
|
10
文字の位置
test
CHANGED
File without changes
|
test
CHANGED
@@ -144,9 +144,7 @@
|
|
144
144
|
```(Python)
|
145
145
|
|
146
146
|
|
147
|
-
毎度毎度不備ばかりですみませんでした。
|
148
|
-
|
149
|
-
https://qiita.com/tako_wasabi/questions/0dbcdc232f8c73ad7dec
|
147
|
+
毎度毎度不備ばかりですみませんでした。https://qiita.com/tako_wasabi/questions/0dbcdc232f8c73ad7dec
|
150
148
|
出来るだけ早く多くの意見を得るためにこちらにも質問を投稿させていただいています。
|
151
149
|
「2つ目のウィンドウのレイアウト」が動かないコードだというご指摘がありましたがそこも含めて調べながら頑張った結果です。いくら調べても料金を選択したものに対応させるものに類似するものがなかったため未完成品を提出せざるを得ませんでした。
|
152
150
|
|
9
対応
test
CHANGED
File without changes
|
test
CHANGED
@@ -147,6 +147,6 @@
|
|
147
147
|
毎度毎度不備ばかりですみませんでした。
|
148
148
|
|
149
149
|
https://qiita.com/tako_wasabi/questions/0dbcdc232f8c73ad7dec
|
150
|
-
出来るだけ多くの意見を得るためにこちらにも質問を投稿させていただいています。
|
150
|
+
出来るだけ早く多くの意見を得るためにこちらにも質問を投稿させていただいています。
|
151
|
-
|
151
|
+
「2つ目のウィンドウのレイアウト」が動かないコードだというご指摘がありましたがそこも含めて調べながら頑張った結果です。いくら調べても料金を選択したものに対応させるものに類似するものがなかったため未完成品を提出せざるを得ませんでした。
|
152
152
|
|
8
利用規約の対応
test
CHANGED
File without changes
|
test
CHANGED
@@ -145,4 +145,8 @@
|
|
145
145
|
|
146
146
|
|
147
147
|
毎度毎度不備ばかりですみませんでした。
|
148
|
+
|
149
|
+
https://qiita.com/tako_wasabi/questions/0dbcdc232f8c73ad7dec
|
150
|
+
出来るだけ多くの意見を得るためにこちらにも質問を投稿させていただいています。
|
151
|
+
|
148
152
|
|
7
変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
---
|
2
|
-
学校にあった食券販売機みたいなものをPySimpleGUIチェックボックス形式にして作ってみたいのですが、画面転移させる時に
|
2
|
+
学校にあった食券販売機みたいなものをPySimpleGUIチェックボックス形式にして作ってみたいのですが、画面転移させる時に5画面の処理はできたのですがここからどうやってチェックボックスがTrueのものだけ料金を加算するようにできるかがわかりません。なんとかなりませんか?
|
3
3
|
- 画面1でメニュー表示(チェックボックス形式)
|
4
4
|
- メニューはカレー420円、ラーメン450円、うどん400円、蕎麦400円、それぞれ大盛りはプラス70円
|
5
5
|
- 画面2で一度注文の確認を表示してから会計画面に行く
|
6
|
-
- 画面3で人数の確認(1人だったらそのまま会計へ、複数だったら割り勘をさせる。割り勘のためGUIはもう作成済み)
|
6
|
+
- 画面3で人数の確認(1人だったらそのまま会計へ、複数だったら割り勘をさせる。割り勘のためのGUIはもう作成済み)
|
7
7
|
|
8
8
|
他のGUIツールはややこしかったのでPySimpleGUIでやってます。よろしくお願いします。
|
9
9
|
|
@@ -144,7 +144,5 @@
|
|
144
144
|
```(Python)
|
145
145
|
|
146
146
|
|
147
|
-
|
148
|
-
ここまではできたのですがここからどうやってチェックボックスがTrueのものだけ料金を加算するようにできるかがわかりません。
|
149
147
|
毎度毎度不備ばかりですみませんでした。
|
150
148
|
|
6
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -5,8 +5,7 @@
|
|
5
5
|
- 画面2で一度注文の確認を表示してから会計画面に行く
|
6
6
|
- 画面3で人数の確認(1人だったらそのまま会計へ、複数だったら割り勘をさせる。割り勘のためGUIはもう作成済み)
|
7
7
|
|
8
|
-
他のGUIツールはややこしかったのでPySimpleGUIでやってます。
|
8
|
+
他のGUIツールはややこしかったのでPySimpleGUIでやってます。よろしくお願いします。
|
9
|
-
Pythonは只今猛勉強中なので大変かと思いますが#で説明を入れてくれると助かります。どうかよろしくお願いします。
|
10
9
|
|
11
10
|
|
12
11
|
```
|
5
謝罪
test
CHANGED
File without changes
|
test
CHANGED
@@ -147,4 +147,5 @@
|
|
147
147
|
|
148
148
|
|
149
149
|
ここまではできたのですがここからどうやってチェックボックスがTrueのものだけ料金を加算するようにできるかがわかりません。
|
150
|
+
毎度毎度不備ばかりですみませんでした。
|
150
151
|
|
4
言語名の記入
test
CHANGED
File without changes
|
test
CHANGED
@@ -142,7 +142,7 @@
|
|
142
142
|
window5.hide()
|
143
143
|
window4.un_hide()
|
144
144
|
|
145
|
-
```
|
145
|
+
```(Python)
|
146
146
|
|
147
147
|
|
148
148
|
|
3
書き方の変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -9,14 +9,10 @@
|
|
9
9
|
Pythonは只今猛勉強中なので大変かと思いますが#で説明を入れてくれると助かります。どうかよろしくお願いします。
|
10
10
|
|
11
11
|
|
12
|
-
|
12
|
+
```
|
13
13
|
import PySimpleGUI as sg
|
14
|
-
|
15
|
-
|
16
|
-
#要素の準備
|
14
|
+
#要素の準備
|
17
|
-
|
18
|
-
|
19
|
-
#1つ目のウィンドウの要素の準備
|
15
|
+
#1つ目のウィンドウの要素の準備
|
20
16
|
text1 = "注文を選択"
|
21
17
|
#2つ目のウィンドウの要素の準備
|
22
18
|
menu = {
|
@@ -146,6 +142,8 @@
|
|
146
142
|
window5.hide()
|
147
143
|
window4.un_hide()
|
148
144
|
|
145
|
+
```
|
146
|
+
|
149
147
|
|
150
148
|
|
151
149
|
ここまではできたのですがここからどうやってチェックボックスがTrueのものだけ料金を加算するようにできるかがわかりません。
|
2
質問内容の訂正
test
CHANGED
File without changes
|
test
CHANGED
@@ -7,3 +7,146 @@
|
|
7
7
|
|
8
8
|
他のGUIツールはややこしかったのでPySimpleGUIでやってます。できればそれに合わせて欲しいです。
|
9
9
|
Pythonは只今猛勉強中なので大変かと思いますが#で説明を入れてくれると助かります。どうかよろしくお願いします。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
import PySimpleGUI as sg
|
14
|
+
|
15
|
+
|
16
|
+
#要素の準備
|
17
|
+
|
18
|
+
|
19
|
+
#1つ目のウィンドウの要素の準備
|
20
|
+
text1 = "注文を選択"
|
21
|
+
#2つ目のウィンドウの要素の準備
|
22
|
+
menu = {
|
23
|
+
'-menu1-': 'カレー',
|
24
|
+
'-menu2-': 'ラーメン',
|
25
|
+
'-menu3-': 'うどん',
|
26
|
+
'-menu4-':'蕎麦'
|
27
|
+
}
|
28
|
+
|
29
|
+
|
30
|
+
#レイアウト
|
31
|
+
|
32
|
+
|
33
|
+
# 1つ目のウィンドウのレイアウト
|
34
|
+
layout1 = [
|
35
|
+
[sg.Text(text1)],
|
36
|
+
|
37
|
+
|
38
|
+
[sg.Text("メニュー")],
|
39
|
+
[sg.Checkbox("カレー420円",key="-menu1-")],
|
40
|
+
|
41
|
+
[sg.Checkbox("ラーメン450円",key="-menu2-")],
|
42
|
+
|
43
|
+
[sg.Checkbox("うどん400円",key="-menu3-")],
|
44
|
+
|
45
|
+
|
46
|
+
[sg.Checkbox("蕎麦400円",key="-menu4-")],
|
47
|
+
|
48
|
+
|
49
|
+
[sg.Button("閉じる",key='-CLOSE-'), sg.Button("次へ",key='-NEXT-')]
|
50
|
+
|
51
|
+
|
52
|
+
# 2つ目のウィンドウのレイアウト
|
53
|
+
row1 = [
|
54
|
+
txt = 'ご注文は'
|
55
|
+
for key in menu.keys():
|
56
|
+
if value[key] == True:
|
57
|
+
if firstloop:
|
58
|
+
txt = txt + menu[key]
|
59
|
+
firstloop = False
|
60
|
+
else:
|
61
|
+
txt = txt + 'と' + menu[key]
|
62
|
+
|
63
|
+
|
64
|
+
txt = txt + 'です。よろしいですか?'
|
65
|
+
if firstloop:
|
66
|
+
message = '何か選択してください'
|
67
|
+
sg.popup(message)
|
68
|
+
break
|
69
|
+
|
70
|
+
|
71
|
+
elif event is None:
|
72
|
+
break
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
]
|
77
|
+
|
78
|
+
|
79
|
+
row2 = [
|
80
|
+
sg.Button("前へ",key= '-BACK-'),
|
81
|
+
sg.Button("次へ"),
|
82
|
+
]
|
83
|
+
|
84
|
+
|
85
|
+
layout2 = [
|
86
|
+
row1,
|
87
|
+
row2,
|
88
|
+
]
|
89
|
+
|
90
|
+
|
91
|
+
# 3つ目のウィンドウのレイアウト
|
92
|
+
layout3 = [[sg.Text('人数確認')],
|
93
|
+
#←ここに割り勘の時の人数のやつを入れる
|
94
|
+
[sg.Button('前へ'), sg.Button('次へ')]]
|
95
|
+
|
96
|
+
|
97
|
+
# 4つ目のウィンドウのレイアウト
|
98
|
+
layout4 = [[sg.Text('4つ目のウィンドウ')],
|
99
|
+
[sg.Button('前へ'), sg.Button('次へ')]]
|
100
|
+
|
101
|
+
|
102
|
+
# 5つ目のウィンドウのレイアウト
|
103
|
+
layout5 = [[sg.Text('5つ目のウィンドウ')],
|
104
|
+
[sg.Button('前へ'), sg.Button('閉じる')]]
|
105
|
+
|
106
|
+
|
107
|
+
# ウィンドウの作成
|
108
|
+
window1 = sg.Window('メニュー画面', layout1, finalize=True)
|
109
|
+
window2 = sg.Window('確認画面', layout2, finalize=True)
|
110
|
+
window2.hide() # 最初はwindow2を非表示にする
|
111
|
+
window3 = sg.Window('人数確認', layout3, finalize=True)
|
112
|
+
window3.hide() # 最初はwindow3を非表示にする
|
113
|
+
window4 = sg.Window('お会計', layout4, finalize=True)
|
114
|
+
window4.hide() # 最初はwindow4を非表示にする
|
115
|
+
window5 = sg.Window('会計完了', layout5, finalize=True)
|
116
|
+
window5.hide() # 最初はwindow5を非表示にする
|
117
|
+
|
118
|
+
|
119
|
+
while True:
|
120
|
+
window, event, values = sg.read_all_windows() # イベントを待機
|
121
|
+
print('イベント:',event,',値:',values)
|
122
|
+
if event == sg.WIN_CLOSED or event == '-CLOSE-':
|
123
|
+
break
|
124
|
+
elif event == '-NEXT-' and window == window1:
|
125
|
+
window1.hide()
|
126
|
+
window2.un_hide()
|
127
|
+
elif event == '-BACK-' and window == window2:
|
128
|
+
window2.hide()
|
129
|
+
window1.un_hide()
|
130
|
+
elif event == '-NEXT-' and window == window2:
|
131
|
+
window2.hide()
|
132
|
+
window3.un_hide()
|
133
|
+
elif event == '-BACK-' and window == window3:
|
134
|
+
window3.hide()
|
135
|
+
window2.un_hide()
|
136
|
+
elif event == '-NEXT-' and window == window3:
|
137
|
+
window3.hide()
|
138
|
+
window4.un_hide()
|
139
|
+
elif event == '-BACK-' and window == window4:
|
140
|
+
window4.hide()
|
141
|
+
window3.un_hide()
|
142
|
+
elif event == '-NEXT-' and window == window4:
|
143
|
+
window4.hide()
|
144
|
+
window5.un_hide()
|
145
|
+
elif event == '-BACK-' and window == window5:
|
146
|
+
window5.hide()
|
147
|
+
window4.un_hide()
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
ここまではできたのですがここからどうやってチェックボックスがTrueのものだけ料金を加算するようにできるかがわかりません。
|
152
|
+
|
1
誤字訂正:もう勉強→猛勉強
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,4 +6,4 @@
|
|
6
6
|
- 画面3で人数の確認(1人だったらそのまま会計へ、複数だったら割り勘をさせる。割り勘のためGUIはもう作成済み)
|
7
7
|
|
8
8
|
他のGUIツールはややこしかったのでPySimpleGUIでやってます。できればそれに合わせて欲しいです。
|
9
|
-
Pythonは只今
|
9
|
+
Pythonは只今猛勉強中なので大変かと思いますが#で説明を入れてくれると助かります。どうかよろしくお願いします。
|