回答編集履歴

2

更に追記

2018/04/07 17:03

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -13,3 +13,91 @@
13
13
  [イベント駆動型プログラミング - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E9%A7%86%E5%8B%95%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
14
14
 
15
15
  それなりに難解な概念なので、初心者のうちは敢えて取り組まない方が良いかもしれませんが・・・。
16
+
17
+
18
+
19
+ ### 更に追記
20
+
21
+ 「そういえば、時間を表示したいだけなら別スレッドで延々と走らせればなんとかなるなぁ」と思ったので、書いたコードを示しておきます。無駄にフィボナッチ数を計算させてみました。
22
+
23
+
24
+
25
+ ```python
26
+
27
+ # coding: UTF-8
28
+
29
+
30
+
31
+ from datetime import datetime
32
+
33
+ import threading
34
+
35
+
36
+
37
+ stop = False
38
+
39
+
40
+
41
+ def timer():
42
+
43
+ print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
44
+
45
+ if not stop:
46
+
47
+ t1 = threading.Timer(3, timer)
48
+
49
+ t1.start()
50
+
51
+
52
+
53
+ def fib(n):
54
+
55
+ if n < 2:
56
+
57
+ return n
58
+
59
+ else :
60
+
61
+ return fib(n-1)+fib(n-2)
62
+
63
+
64
+
65
+ def main():
66
+
67
+ global stop
68
+
69
+ t1 = threading.Timer(1, timer)
70
+
71
+ t1.start()
72
+
73
+ while True:
74
+
75
+ line = input()
76
+
77
+ if line == "q":
78
+
79
+ break
80
+
81
+ else:
82
+
83
+ if line.isnumeric() and int(line) >= 0:
84
+
85
+ print("FIB({0})={1}".format(int(line), fib(int(line))))
86
+
87
+ else:
88
+
89
+ print("0以上の整数を入力してください")
90
+
91
+ stop = True
92
+
93
+ t1.join()
94
+
95
+
96
+
97
+ if __name__ == "__main__":
98
+
99
+ main()
100
+
101
+ ```
102
+
103
+ なので、質問の回答としては「スレッド使えばできます」が最終的な答えになりますね。

1

追記を受けて

2018/04/07 17:03

投稿

hayataka2049
hayataka2049

スコア30933

test CHANGED
@@ -1 +1,15 @@
1
1
  ええっと、一定間隔(例としてあがっているプログラムでは1秒おき)で時間を利用した何らかの処理をしたいということであれば、ループの中にその処理を入れれば良いのでは。単に一回だけ時間がわかれば良いのなら、ループをなくせば良い。
2
+
3
+
4
+
5
+ ### 質問の追記を受けて
6
+
7
+ やりたいことはわかりました。
8
+
9
+ TkはGUIツールキットなので、GUIを作るとき以外は使いません。
10
+
11
+ どうしてTkでそういう処理ができるのかというと、端的に言えばTkにイベントドリブンの概念があるからです。これはここで説明して理解して頂くのは難しいし、やりたくないので、ご自身で勉強して理解してください。一応wikipediaを貼っておきます。
12
+
13
+ [イベント駆動型プログラミング - Wikipedia](https://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E9%A7%86%E5%8B%95%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
14
+
15
+ それなりに難解な概念なので、初心者のうちは敢えて取り組まない方が良いかもしれませんが・・・。