回答編集履歴

2

修正2

2020/08/23 21:43

投稿

Reach
Reach

スコア733

test CHANGED
@@ -143,3 +143,9 @@
143
143
  w.root.mainloop()
144
144
 
145
145
  ```
146
+
147
+
148
+
149
+ 本来の目的の実装の為には
150
+
151
+ conductMain 関数の手直しが 必要かもしれません‥‥

1

修正

2020/08/23 21:43

投稿

Reach
Reach

スコア733

test CHANGED
@@ -1,3 +1,145 @@
1
- [Tkinterの使い方:after 処理を「遅らせて」or 処理を「定期 ...](https://daeudaeu.com/tkinter_after/)
1
+ afterだけなく update を挟みました
2
2
 
3
+ ```Python
4
+
5
+ # -*- coding: utf-8 -*-
6
+
7
+
8
+
9
+ from tkinter import *
10
+
11
+ import tkinter as tk
12
+
13
+ from tkinter import ttk
14
+
15
+ import time
16
+
17
+
18
+
19
+
20
+
21
+ class Window:
22
+
23
+ def __init__(self):
24
+
25
+ self.root = Tk()
26
+
27
+ self.root.title("サンプル")
28
+
29
+
30
+
31
+ self.frame3 = ttk.Frame(self.root, padding=10)
32
+
33
+ self.frame3.grid(row=0,column=1,sticky=W)
34
+
35
+
36
+
37
+ self.button1 = ttk.Button(self.frame3, text="実行", command=self.conductMain)
38
+
39
+ self.button1.pack(fill = "x", padx=30, side = "left")
40
+
41
+
42
+
43
+ self.button2 = ttk.Button(self.frame3, text=("閉じる"), command=self.root.quit)
44
+
45
+ self.button2.pack(fill = "x", padx=30, side = "left")
46
+
47
+
48
+
49
+ self.frame4 = ttk.Frame(self.root, padding = 10)
50
+
51
+ self.frame4.grid(row=2,column=1,sticky=E)
52
+
53
+
54
+
55
+ self.sc = tk.Scrollbar(self.frame4)
56
+
57
+ self.sc.pack(side = RIGHT, fill = "y")
58
+
59
+
60
+
61
+ self.tx = tk.Text(self.frame4, width = 48, height = 5)
62
+
63
+ self.tx.pack()
64
+
65
+
66
+
67
+ self.tx["yscrollcommand"] = self.sc.set
68
+
69
+ self.sc["command"] = self.tx.yview
70
+
71
+
72
+
73
+
74
+
75
+ #テキストボックスに文字を出力する関数です
76
+
77
+ #文字を出力->改行->自動スクロール
78
+
79
+ def print_text(self,text):
80
+
81
+ self.tx.insert(END, text)
82
+
83
+ self.tx.insert(END, "\n")
84
+
85
+ self.tx.see(END)
86
+
87
+
88
+
89
+ #サーバに接続する関数ですが、質問簡単化のために割愛します
90
+
91
+ #実行は1回のみです
92
+
93
+ def connect_server(self):
94
+
95
+ pass
96
+
97
+
98
+
99
+ #サーバから文字列を取得する関数ですが、質問簡単化のために割愛します
100
+
101
+ #実行は繰り返し行われます
102
+
103
+ def get_text_from_server(self):
104
+
105
+ pass
106
+
107
+
108
+
109
+ #実行ボタンを押した際に実行されます
110
+
111
+ #処理内容は以下の通りです
112
+
113
+ #サーバに接続->文字列を取得->特定の文字列でなければwhile内を実行(例:end以外なら実行)
114
+
115
+ #whileの中身:文字列を表示->1秒待機
116
+
117
+ def conductMain(self):
118
+
119
+ self.connect_server()
120
+
121
+ i = 0
122
+
123
+ #実際はサーバから特定の文字列を取得した際に終了しますが、
124
+
125
+ #今回は簡単化のために3回実行したら終了するようにしています
126
+
127
+ while i < 3:
128
+
129
+ self.root.after(1000,self.print_text(i))
130
+
131
+ self.root.update()
132
+
133
+ i += 1
134
+
135
+
136
+
137
+ if __name__ == "__main__":
138
+
139
+
140
+
3
- とか 使えないでしょうか?
141
+ w = Window()
142
+
143
+ w.root.mainloop()
144
+
145
+ ```