回答編集履歴

8

リストの中身だけ表示するように変更

2022/03/28 15:03

投稿

shiracamus
shiracamus

スコア5406

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=str(numbers))
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'] = str(numbers)
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'] = str(numbers)
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=str(self.numbers))
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'] = str(self.numbers)
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'] = str(self.numbers)
129
+ self.numbers_display['text'] = ' '.join(self.numbers)
130
130
  self.entry.delete(0, tkinter.END)
131
131
 
132
132
 

7

クラス定義版追記

2022/03/27 17:15

投稿

shiracamus
shiracamus

スコア5406

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変数導入

2022/03/27 17:05

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -52,12 +52,14 @@
52
52
  entry.pack()
53
53
 
54
54
  def add_number():
55
+ number = entry.get().strip()
55
- add(entry.get().strip(), numbers)
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(entry.get().strip(), numbers)
62
+ remove(number, numbers)
61
63
  numbers_display['text'] = str(numbers)
62
64
  entry.delete(0, tkinter.END)
63
65
 

5

命名規則について追記

2022/03/27 16:56

投稿

shiracamus
shiracamus

スコア5406

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

クラス定義について追記

2022/03/27 16:50

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,4 +1,5 @@
1
1
  command引数に無理やり押し込まずに、関数内関数にしてはいかがですか?
2
+ 関数内関数が多くなるようでしたら、class定義にしてメソッドにすればスッキリしますよ。
2
3
  時刻表示は f-string で簡略化できます。5ミリ秒毎に時刻表示するのはCPUの無駄遣いなので、1秒毎更新でいいと思いますよ。
3
4
 
4
5
  ```python

3

助詞訂正

2022/03/27 16:47

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,5 +1,5 @@
1
1
  command引数に無理やり押し込まずに、関数内関数にしてはいかがですか?
2
- 時刻表示 f-string で簡略化できます。5ミリ秒毎に時刻表示するのはCPUの無駄遣いなので、1秒毎更新でいいと思いますよ。
2
+ 時刻表示 f-string で簡略化できます。5ミリ秒毎に時刻表示するのはCPUの無駄遣いなので、1秒毎更新でいいと思いますよ。
3
3
 
4
4
  ```python
5
5
  import datetime

2

時刻表示についてコメント

2022/03/27 16:46

投稿

shiracamus
shiracamus

スコア5406

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

時刻表示についてコメント

2022/03/27 16:45

投稿

shiracamus
shiracamus

スコア5406

test CHANGED
@@ -1,4 +1,5 @@
1
1
  command引数に無理やり押し込まずに、関数内関数にしてはいかがですか?
2
+ 時刻表示も f-string で簡略化できます。
2
3
 
3
4
  ```python
4
5
  import datetime