質問編集履歴

3

全ソースを開示しました。

2020/04/13 03:16

投稿

sky6720
sky6720

スコア19

test CHANGED
File without changes
test CHANGED
@@ -34,13 +34,51 @@
34
34
 
35
35
 
36
36
 
37
+ ###再追記
38
+
39
+ 下記が全ソースです。
40
+
41
+
42
+
37
43
  「main.py」
38
44
 
39
45
  ```python
40
46
 
47
+ import tkinter as tk
48
+
49
+ import subprocess as sp
50
+
51
+ import k_msg
52
+
53
+
54
+
55
+ def cptxt(event):
56
+
41
- num = '5'
57
+ num = ent.get()
58
+
42
-
59
+ if not str.isdecimal(num):
60
+
61
+ k_msg.msg('error', 'input integer')
62
+
63
+ ent.delete(0, tk.END)
64
+
65
+ return
66
+
43
- subprocess.Popen(['start', '', 'hogehoge.py', num], shell = True)
67
+ sp.Popen(['start', '', 'hogehoge.py', num], shell = True)
68
+
69
+ root.destroy()
70
+
71
+
72
+
73
+ root = tk.Tk()
74
+
75
+ ent = tk.Entry(root)
76
+
77
+ ent.bind('<Return>', cptxt)
78
+
79
+ ent.pack()
80
+
81
+ root.mainloop()
44
82
 
45
83
  ```
46
84
 
@@ -50,20 +88,160 @@
50
88
 
51
89
  ```python
52
90
 
91
+ import tkinter as tk
92
+
93
+ import pyperclip as pc
94
+
95
+ import threading as th
96
+
53
97
  import sys
54
98
 
99
+ import k_msg
100
+
101
+
102
+
103
+ #ステータスのクリア
104
+
105
+ def clear_status(i):
106
+
107
+ stts[i]['text'] = ''
108
+
109
+
110
+
111
+ #コールバック関数_ステータスにコピーしたことを通知する
112
+
113
+ def callback(i):
114
+
115
+ def copy_txt(event):
116
+
117
+ etr = etrs[i].get("1.0", "end-1c")
118
+
119
+ pc.copy(etr)
120
+
121
+ stts[i]['text'] = 'copy...'
122
+
123
+ t = th.Timer(1, clear_status, args=[i])
124
+
125
+ t.start()
126
+
127
+ return copy_txt
128
+
129
+
130
+
131
+ #コマンドラインオプションの値をテキストボックスの数にする_デフォルトは3
132
+
133
+ if __name__ == '__main__':
134
+
55
- try:
135
+ try:
56
-
136
+
57
- args = sys.argv
137
+ args = sys.argv
58
-
138
+
59
- num_text = int(args[1])
139
+ num_text = int(args[1])
60
-
140
+
61
- print('try')
141
+ print('try')
62
-
142
+
63
- except:
143
+ except:
64
-
144
+
65
- num_text = 3
145
+ num_text = 3
66
-
146
+
67
- print('except')
147
+ print('except')
148
+
68
-
149
+ #枠の作成
150
+
151
+ print(num_text)
152
+
153
+ root = tk.Tk()
154
+
155
+ frame_field = '500x' + str(num_text * 100)
156
+
157
+ root.geometry(frame_field)
158
+
159
+ root.title('Copy Text V1.0')
160
+
161
+ #各ボタン・テキストボックスの作成
162
+
163
+ etrs = []
164
+
165
+ butts = []
166
+
167
+ stts = []
168
+
169
+ for i in range(num_text):
170
+
171
+ etrs.append(tk.Text(root, width='40', height='3', font='consolas'))
172
+
173
+ etrs[i].place(x='10', y=100*i+10)
174
+
175
+ butts.append(tk.Button(root, text='Copy', width='7', height='1', font='consolas'))
176
+
177
+ butts[i].bind('<Enter>', callback(i))
178
+
179
+ butts[i].place(x='415', y=100*i+10)
180
+
181
+ stts.append(tk.Label(root, text='', width='10', height='1', font=('consolas', 10)))
182
+
183
+ stts[i].place(x='415', y=100*i+50)
184
+
185
+
186
+
187
+ root.mainloop()
188
+
69
- ```
189
+ ```
190
+
191
+
192
+
193
+ 「k_msg.py」
194
+
195
+ ```python
196
+
197
+ def msg(ttl, val, box=64):
198
+
199
+ """
200
+
201
+ show messagebox
202
+
203
+
204
+
205
+ args:
206
+
207
+ [0] : title
208
+
209
+ [1] : value
210
+
211
+ [2] : form type
212
+
213
+
214
+
215
+ form type(return value):
216
+
217
+ 0 : OK(1)
218
+
219
+ 1 : OK(1) キャンセル(2)
220
+
221
+ 2 : 中止(3) 再試行(4) 無視(5)
222
+
223
+ 3 : はい(6) いいえ(7) キャンセル(2)
224
+
225
+ 4 : はい(6) いいえ(7)
226
+
227
+ 5 : 再試行(4) キャンセル(2)
228
+
229
+ 6 : キャンセル(2) 再実行(10) 続行(11)
230
+
231
+ +16 : Exclamation
232
+
233
+ +32 : Question
234
+
235
+ +48 : Warning
236
+
237
+ +64 : Information
238
+
239
+ """
240
+
241
+ import ctypes as ct
242
+
243
+ u32 = ct.WinDLL('user32')
244
+
245
+ return u32.MessageBoxW(0, val, ttl, box+65536)
246
+
247
+ ```

2

import文を追記しました。

2020/04/13 03:16

投稿

sky6720
sky6720

スコア19

test CHANGED
File without changes
test CHANGED
@@ -50,6 +50,8 @@
50
50
 
51
51
  ```python
52
52
 
53
+ import sys
54
+
53
55
  try:
54
56
 
55
57
  args = sys.argv

1

検証した結果を追記しました。

2020/04/13 02:42

投稿

sky6720
sky6720

スコア19

test CHANGED
File without changes
test CHANGED
@@ -15,3 +15,53 @@
15
15
 
16
16
 
17
17
  初歩的な質問で申し訳ありませんがご教授ください。
18
+
19
+
20
+
21
+ ##追記
22
+
23
+ ここ数日ご教授いただいたことを確認しましたが、正常動作しません。
24
+
25
+ 参照先ではコマンドライン引数無しでも実行させたいので`try`で引数があるかを確認しています。
26
+
27
+ またhogehoge.pyでは受け取った引数は数値として扱いたいので`int`にしています。
28
+
29
+ 下記のように受け取ったあと`try`と`except`のどちらが動作しているか確認すると、
30
+
31
+ どちらにも入っておらず飛ばされていることが判明しました。
32
+
33
+ hogehoge.pyのせいでありそうだというところまで判明しました。
34
+
35
+
36
+
37
+ 「main.py」
38
+
39
+ ```python
40
+
41
+ num = '5'
42
+
43
+ subprocess.Popen(['start', '', 'hogehoge.py', num], shell = True)
44
+
45
+ ```
46
+
47
+
48
+
49
+ 「hogehoge.py」
50
+
51
+ ```python
52
+
53
+ try:
54
+
55
+ args = sys.argv
56
+
57
+ num_text = int(args[1])
58
+
59
+ print('try')
60
+
61
+ except:
62
+
63
+ num_text = 3
64
+
65
+ print('except')
66
+
67
+ ```