回答編集履歴
8
リストの中身だけ表示するように変更
test
CHANGED
@@ -42,7 +42,7 @@
|
|
42
42
|
time.after(5, lambda: show_time(time))
|
43
43
|
|
44
44
|
numbers = []
|
45
|
-
numbers_display = tkinter.Label(text=
|
45
|
+
numbers_display = tkinter.Label(text=' '.join(numbers))
|
46
46
|
numbers_display.pack()
|
47
47
|
|
48
48
|
label = tkinter.Label(win, text='番号を入力してください:')
|
@@ -54,13 +54,13 @@
|
|
54
54
|
def add_number():
|
55
55
|
number = entry.get().strip()
|
56
56
|
add(number, numbers)
|
57
|
-
numbers_display['text'] =
|
57
|
+
numbers_display['text'] = ' '.join(numbers)
|
58
58
|
entry.delete(0, tkinter.END)
|
59
59
|
|
60
60
|
def remove_number():
|
61
61
|
number = entry.get().strip()
|
62
62
|
remove(number, numbers)
|
63
|
-
numbers_display['text'] =
|
63
|
+
numbers_display['text'] = ' '.join(numbers)
|
64
64
|
entry.delete(0, tkinter.END)
|
65
65
|
|
66
66
|
button = tkinter.Button(win, text='追加', command=add_number)
|
@@ -92,7 +92,7 @@
|
|
92
92
|
self.time.pack()
|
93
93
|
|
94
94
|
self.numbers = []
|
95
|
-
self.numbers_display = tkinter.Label(text=
|
95
|
+
self.numbers_display = tkinter.Label(text=' '.join(self.numbers))
|
96
96
|
self.numbers_display.pack()
|
97
97
|
|
98
98
|
label = tkinter.Label(win, text='番号を入力してください:')
|
@@ -119,14 +119,14 @@
|
|
119
119
|
number = self.entry.get().strip()
|
120
120
|
if number and number not in self.numbers:
|
121
121
|
self.numbers.append(number)
|
122
|
-
self.numbers_display['text'] =
|
122
|
+
self.numbers_display['text'] = ' '.join(self.numbers)
|
123
123
|
self.entry.delete(0, tkinter.END)
|
124
124
|
|
125
125
|
def remove(self):
|
126
126
|
number = self.entry.get().strip()
|
127
127
|
if number in self.numbers:
|
128
128
|
self.numbers.remove(number)
|
129
|
-
self.numbers_display['text'] =
|
129
|
+
self.numbers_display['text'] = ' '.join(self.numbers)
|
130
130
|
self.entry.delete(0, tkinter.END)
|
131
131
|
|
132
132
|
|
7
クラス定義版追記
test
CHANGED
@@ -78,3 +78,67 @@
|
|
78
78
|
main()
|
79
79
|
```
|
80
80
|
|
81
|
+
クラス定義にするとこんな感じです。
|
82
|
+
|
83
|
+
```python
|
84
|
+
import datetime
|
85
|
+
import tkinter
|
86
|
+
|
87
|
+
|
88
|
+
class App:
|
89
|
+
|
90
|
+
def __init__(self, win):
|
91
|
+
self.time = tkinter.Label(win)
|
92
|
+
self.time.pack()
|
93
|
+
|
94
|
+
self.numbers = []
|
95
|
+
self.numbers_display = tkinter.Label(text=str(self.numbers))
|
96
|
+
self.numbers_display.pack()
|
97
|
+
|
98
|
+
label = tkinter.Label(win, text='番号を入力してください:')
|
99
|
+
label.pack()
|
100
|
+
|
101
|
+
self.entry = tkinter.Entry(win)
|
102
|
+
self.entry.pack()
|
103
|
+
|
104
|
+
button = tkinter.Button(win, text='追加', command=self.add)
|
105
|
+
button.pack()
|
106
|
+
|
107
|
+
button = tkinter.Button(win, text='削除', command=self.remove)
|
108
|
+
button.pack()
|
109
|
+
|
110
|
+
button = tkinter.Button(win, text='画面を閉じる', command=win.quit)
|
111
|
+
button.pack()
|
112
|
+
|
113
|
+
def show_time(self): # 現在時刻を表示
|
114
|
+
now = datetime.datetime.today()
|
115
|
+
self.time['text'] = f'現在時刻:{now:%Y/%m/%d %H:%M:%S}'
|
116
|
+
self.time.after(1000, self.show_time)
|
117
|
+
|
118
|
+
def add(self):
|
119
|
+
number = self.entry.get().strip()
|
120
|
+
if number and number not in self.numbers:
|
121
|
+
self.numbers.append(number)
|
122
|
+
self.numbers_display['text'] = str(self.numbers)
|
123
|
+
self.entry.delete(0, tkinter.END)
|
124
|
+
|
125
|
+
def remove(self):
|
126
|
+
number = self.entry.get().strip()
|
127
|
+
if number in self.numbers:
|
128
|
+
self.numbers.remove(number)
|
129
|
+
self.numbers_display['text'] = str(self.numbers)
|
130
|
+
self.entry.delete(0, tkinter.END)
|
131
|
+
|
132
|
+
|
133
|
+
def main():
|
134
|
+
win = tkinter.Tk()
|
135
|
+
win.title("WINDOW")
|
136
|
+
win.geometry("500x300")
|
137
|
+
app = App(win)
|
138
|
+
app.show_time()
|
139
|
+
win.mainloop()
|
140
|
+
|
141
|
+
|
142
|
+
main()
|
143
|
+
```
|
144
|
+
|
6
number変数導入
test
CHANGED
@@ -52,12 +52,14 @@
|
|
52
52
|
entry.pack()
|
53
53
|
|
54
54
|
def add_number():
|
55
|
+
number = entry.get().strip()
|
55
|
-
add(
|
56
|
+
add(number, numbers)
|
56
57
|
numbers_display['text'] = str(numbers)
|
57
58
|
entry.delete(0, tkinter.END)
|
58
59
|
|
59
60
|
def remove_number():
|
61
|
+
number = entry.get().strip()
|
60
|
-
remove(
|
62
|
+
remove(number, numbers)
|
61
63
|
numbers_display['text'] = str(numbers)
|
62
64
|
entry.delete(0, tkinter.END)
|
63
65
|
|
5
命名規則について追記
test
CHANGED
@@ -1,6 +1,13 @@
|
|
1
|
-
command引数に無理やり押し込まずに、関数内関数にしてはいかがですか?
|
1
|
+
command引数に無理やり押し込まずに、関数内関数にして処理してはいかがですか?
|
2
2
|
関数内関数が多くなるようでしたら、class定義にしてメソッドにすればスッキリしますよ。
|
3
3
|
時刻表示は f-string で簡略化できます。5ミリ秒毎に時刻表示するのはCPUの無駄遣いなので、1秒毎更新でいいと思いますよ。
|
4
|
+
|
5
|
+
あと、Pythonには「[PEP8: Pythonコードのスタイルガイド](https://pep8-ja.readthedocs.io/ja/latest/)」があって、命名規則が書いてあります。
|
6
|
+
|
7
|
+
- 定数名: 英大文字とアンダースコア文字
|
8
|
+
- 変数名: 英小文字とアンダースコア文字
|
9
|
+
- 関数名: 英小文字とアンダースコア文字
|
10
|
+
- クラス名: 英大文字始まり単語を連結
|
4
11
|
|
5
12
|
```python
|
6
13
|
import datetime
|
4
クラス定義について追記
test
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
command引数に無理やり押し込まずに、関数内関数にしてはいかがですか?
|
2
|
+
関数内関数が多くなるようでしたら、class定義にしてメソッドにすればスッキリしますよ。
|
2
3
|
時刻表示は f-string で簡略化できます。5ミリ秒毎に時刻表示するのはCPUの無駄遣いなので、1秒毎更新でいいと思いますよ。
|
3
4
|
|
4
5
|
```python
|
3
助詞訂正
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
command引数に無理やり押し込まずに、関数内関数にしてはいかがですか?
|
2
|
-
時刻表示
|
2
|
+
時刻表示は f-string で簡略化できます。5ミリ秒毎に時刻表示するのはCPUの無駄遣いなので、1秒毎更新でいいと思いますよ。
|
3
3
|
|
4
4
|
```python
|
5
5
|
import datetime
|
2
時刻表示についてコメント
test
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
command引数に無理やり押し込まずに、関数内関数にしてはいかがですか?
|
2
|
-
時刻表示も f-string で簡略化できます。
|
2
|
+
時刻表示も f-string で簡略化できます。5ミリ秒毎に時刻表示するのはCPUの無駄遣いなので、1秒毎更新でいいと思いますよ。
|
3
3
|
|
4
4
|
```python
|
5
5
|
import datetime
|
1
時刻表示についてコメント
test
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
command引数に無理やり押し込まずに、関数内関数にしてはいかがですか?
|
2
|
+
時刻表示も f-string で簡略化できます。
|
2
3
|
|
3
4
|
```python
|
4
5
|
import datetime
|