teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

更に追記

2018/04/07 17:03

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -5,4 +5,48 @@
5
5
  TkはGUIツールキットなので、GUIを作るとき以外は使いません。
6
6
  どうしてTkでそういう処理ができるのかというと、端的に言えばTkにイベントドリブンの概念があるからです。これはここで説明して理解して頂くのは難しいし、やりたくないので、ご自身で勉強して理解してください。一応wikipediaを貼っておきます。
7
7
  [イベント駆動型プログラミング - 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)
8
- それなりに難解な概念なので、初心者のうちは敢えて取り組まない方が良いかもしれませんが・・・。
8
+ それなりに難解な概念なので、初心者のうちは敢えて取り組まない方が良いかもしれませんが・・・。
9
+
10
+ ### 更に追記
11
+ 「そういえば、時間を表示したいだけなら別スレッドで延々と走らせればなんとかなるなぁ」と思ったので、書いたコードを示しておきます。無駄にフィボナッチ数を計算させてみました。
12
+
13
+ ```python
14
+ # coding: UTF-8
15
+
16
+ from datetime import datetime
17
+ import threading
18
+
19
+ stop = False
20
+
21
+ def timer():
22
+ print(datetime.now().strftime("%Y/%m/%d %H:%M:%S"))
23
+ if not stop:
24
+ t1 = threading.Timer(3, timer)
25
+ t1.start()
26
+
27
+ def fib(n):
28
+ if n < 2:
29
+ return n
30
+ else :
31
+ return fib(n-1)+fib(n-2)
32
+
33
+ def main():
34
+ global stop
35
+ t1 = threading.Timer(1, timer)
36
+ t1.start()
37
+ while True:
38
+ line = input()
39
+ if line == "q":
40
+ break
41
+ else:
42
+ if line.isnumeric() and int(line) >= 0:
43
+ print("FIB({0})={1}".format(int(line), fib(int(line))))
44
+ else:
45
+ print("0以上の整数を入力してください")
46
+ stop = True
47
+ t1.join()
48
+
49
+ if __name__ == "__main__":
50
+ main()
51
+ ```
52
+ なので、質問の回答としては「スレッド使えばできます」が最終的な答えになりますね。

1

追記を受けて

2018/04/07 17:03

投稿

hayataka2049
hayataka2049

スコア30939

answer CHANGED
@@ -1,1 +1,8 @@
1
- ええっと、一定間隔(例としてあがっているプログラムでは1秒おき)で時間を利用した何らかの処理をしたいということであれば、ループの中にその処理を入れれば良いのでは。単に一回だけ時間がわかれば良いのなら、ループをなくせば良い。
1
+ ええっと、一定間隔(例としてあがっているプログラムでは1秒おき)で時間を利用した何らかの処理をしたいということであれば、ループの中にその処理を入れれば良いのでは。単に一回だけ時間がわかれば良いのなら、ループをなくせば良い。
2
+
3
+ ### 質問の追記を受けて
4
+ やりたいことはわかりました。
5
+ TkはGUIツールキットなので、GUIを作るとき以外は使いません。
6
+ どうしてTkでそういう処理ができるのかというと、端的に言えばTkにイベントドリブンの概念があるからです。これはここで説明して理解して頂くのは難しいし、やりたくないので、ご自身で勉強して理解してください。一応wikipediaを貼っておきます。
7
+ [イベント駆動型プログラミング - 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)
8
+ それなりに難解な概念なので、初心者のうちは敢えて取り組まない方が良いかもしれませんが・・・。