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

質問編集履歴

3

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

2020/04/13 03:16

投稿

sky6720
sky6720

スコア20

title CHANGED
File without changes
body CHANGED
@@ -16,20 +16,109 @@
16
16
  どちらにも入っておらず飛ばされていることが判明しました。
17
17
  hogehoge.pyのせいでありそうだというところまで判明しました。
18
18
 
19
+ ###再追記
20
+ 下記が全ソースです。
21
+
19
22
  「main.py」
20
23
  ```python
24
+ import tkinter as tk
25
+ import subprocess as sp
26
+ import k_msg
27
+
28
+ def cptxt(event):
21
- num = '5'
29
+ num = ent.get()
30
+ if not str.isdecimal(num):
31
+ k_msg.msg('error', 'input integer')
32
+ ent.delete(0, tk.END)
33
+ return
22
- subprocess.Popen(['start', '', 'hogehoge.py', num], shell = True)
34
+ sp.Popen(['start', '', 'hogehoge.py', num], shell = True)
35
+ root.destroy()
36
+
37
+ root = tk.Tk()
38
+ ent = tk.Entry(root)
39
+ ent.bind('<Return>', cptxt)
40
+ ent.pack()
41
+ root.mainloop()
23
42
  ```
24
43
 
25
44
  「hogehoge.py」
26
45
  ```python
46
+ import tkinter as tk
47
+ import pyperclip as pc
48
+ import threading as th
27
49
  import sys
50
+ import k_msg
51
+
52
+ #ステータスのクリア
53
+ def clear_status(i):
54
+ stts[i]['text'] = ''
55
+
56
+ #コールバック関数_ステータスにコピーしたことを通知する
57
+ def callback(i):
58
+ def copy_txt(event):
59
+ etr = etrs[i].get("1.0", "end-1c")
60
+ pc.copy(etr)
61
+ stts[i]['text'] = 'copy...'
62
+ t = th.Timer(1, clear_status, args=[i])
63
+ t.start()
64
+ return copy_txt
65
+
66
+ #コマンドラインオプションの値をテキストボックスの数にする_デフォルトは3
67
+ if __name__ == '__main__':
28
- try:
68
+ try:
29
- args = sys.argv
69
+ args = sys.argv
30
- num_text = int(args[1])
70
+ num_text = int(args[1])
31
- print('try')
71
+ print('try')
32
- except:
72
+ except:
33
- num_text = 3
73
+ num_text = 3
34
- print('except')
74
+ print('except')
75
+ #枠の作成
76
+ print(num_text)
77
+ root = tk.Tk()
78
+ frame_field = '500x' + str(num_text * 100)
79
+ root.geometry(frame_field)
80
+ root.title('Copy Text V1.0')
81
+ #各ボタン・テキストボックスの作成
82
+ etrs = []
83
+ butts = []
84
+ stts = []
85
+ for i in range(num_text):
86
+ etrs.append(tk.Text(root, width='40', height='3', font='consolas'))
87
+ etrs[i].place(x='10', y=100*i+10)
88
+ butts.append(tk.Button(root, text='Copy', width='7', height='1', font='consolas'))
89
+ butts[i].bind('<Enter>', callback(i))
90
+ butts[i].place(x='415', y=100*i+10)
91
+ stts.append(tk.Label(root, text='', width='10', height='1', font=('consolas', 10)))
92
+ stts[i].place(x='415', y=100*i+50)
93
+
94
+ root.mainloop()
95
+ ```
96
+
97
+ 「k_msg.py」
98
+ ```python
99
+ def msg(ttl, val, box=64):
100
+ """
101
+ show messagebox
102
+
103
+ args:
104
+ [0] : title
105
+ [1] : value
106
+ [2] : form type
107
+
108
+ form type(return value):
109
+ 0 : OK(1)
110
+ 1 : OK(1) キャンセル(2)
111
+ 2 : 中止(3) 再試行(4) 無視(5)
112
+ 3 : はい(6) いいえ(7) キャンセル(2)
113
+ 4 : はい(6) いいえ(7)
114
+ 5 : 再試行(4) キャンセル(2)
115
+ 6 : キャンセル(2) 再実行(10) 続行(11)
116
+ +16 : Exclamation
117
+ +32 : Question
118
+ +48 : Warning
119
+ +64 : Information
120
+ """
121
+ import ctypes as ct
122
+ u32 = ct.WinDLL('user32')
123
+ return u32.MessageBoxW(0, val, ttl, box+65536)
35
124
  ```

2

import文を追記しました。

2020/04/13 03:16

投稿

sky6720
sky6720

スコア20

title CHANGED
File without changes
body CHANGED
@@ -24,6 +24,7 @@
24
24
 
25
25
  「hogehoge.py」
26
26
  ```python
27
+ import sys
27
28
  try:
28
29
  args = sys.argv
29
30
  num_text = int(args[1])

1

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

2020/04/13 02:42

投稿

sky6720
sky6720

スコア20

title CHANGED
File without changes
body CHANGED
@@ -6,4 +6,29 @@
6
6
  ```
7
7
 
8
8
 
9
- 初歩的な質問で申し訳ありませんがご教授ください。
9
+ 初歩的な質問で申し訳ありませんがご教授ください。
10
+
11
+ ##追記
12
+ ここ数日ご教授いただいたことを確認しましたが、正常動作しません。
13
+ 参照先ではコマンドライン引数無しでも実行させたいので`try`で引数があるかを確認しています。
14
+ またhogehoge.pyでは受け取った引数は数値として扱いたいので`int`にしています。
15
+ 下記のように受け取ったあと`try`と`except`のどちらが動作しているか確認すると、
16
+ どちらにも入っておらず飛ばされていることが判明しました。
17
+ hogehoge.pyのせいでありそうだというところまで判明しました。
18
+
19
+ 「main.py」
20
+ ```python
21
+ num = '5'
22
+ subprocess.Popen(['start', '', 'hogehoge.py', num], shell = True)
23
+ ```
24
+
25
+ 「hogehoge.py」
26
+ ```python
27
+ try:
28
+ args = sys.argv
29
+ num_text = int(args[1])
30
+ print('try')
31
+ except:
32
+ num_text = 3
33
+ print('except')
34
+ ```