回答編集履歴

2

コードを質問のコードに変更(該当箇所のみ)

2021/10/27 02:32

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -18,11 +18,13 @@
18
18
 
19
19
  ----
20
20
 
21
- グローバル変数の使いかた(概要のみ)
21
+ グローバル変数の使いかた
22
22
 
23
23
 
24
24
 
25
25
  ```python
26
+
27
+
26
28
 
27
29
  #1 関数の外で初期化
28
30
 
@@ -36,27 +38,51 @@
36
38
 
37
39
  # 参照のみの場合は不要です。
38
40
 
41
+
42
+
39
- def XXX():
43
+ def STR_procss (event):
40
44
 
41
45
  global evince_GO
42
46
 
43
47
 
44
48
 
45
- #3 利用前に Noneである事を確認
49
+ #3 利用前に Noneである事を確認
46
50
 
47
- if not evince_GO: # 既に evince_GO がある場合、多重起動を防ぎます
51
+ # 既に evince_GO がある場合、多重起動を防ぎます
48
52
 
49
- evince_GO = subprocess.Popen(...)
53
+ if not evince_GO:
50
54
 
51
55
 
52
56
 
53
- #4 利用後後始末
57
+ # XXX: グローバル変数とは別問題ですが、Popenの引数はリストします。
54
58
 
55
- if evince_GO:
59
+ # 注意点 ("evince") はタプルにはなりません。末尾にカンマが必要です。
56
60
 
57
- evince_GO.kill()
61
+ # https://docs.python.org/ja/3/library/subprocess.html#subprocess.Popen
58
62
 
63
+ path = ["evince"]
64
+
65
+
66
+
67
+ evince_GO = subprocess.Popen(path)
68
+
69
+
70
+
71
+ def END_procss(event):
72
+
73
+ global evince_GO
74
+
75
+
76
+
77
+ #4 利用後に後始末
78
+
79
+ if evince_GO:
80
+
81
+ print("end")
82
+
83
+ evince_GO.kill()
84
+
59
- evince_GO = None
85
+ evince_GO = None
60
86
 
61
87
 
62
88
 

1

コードを追記

2021/10/27 02:32

投稿

teamikl
teamikl

スコア8760

test CHANGED
@@ -13,3 +13,51 @@
13
13
 
14
14
 
15
15
  他のエラーの場合は、質問文にエラーメッセージを記載してください。
16
+
17
+
18
+
19
+ ----
20
+
21
+ グローバル変数の使いかた(概要のみ)
22
+
23
+
24
+
25
+ ```python
26
+
27
+ #1 関数の外で初期化
28
+
29
+ evince_GO = None
30
+
31
+
32
+
33
+ #2 各関数内でグローバル宣言
34
+
35
+ # 変数に対して = で直接「代入」を行う関数でのみ宣言
36
+
37
+ # 参照のみの場合は不要です。
38
+
39
+ def XXX():
40
+
41
+ global evince_GO
42
+
43
+
44
+
45
+ #3 利用前に Noneである事を確認
46
+
47
+ if not evince_GO: # 既に evince_GO がある場合、多重起動を防ぎます
48
+
49
+ evince_GO = subprocess.Popen(...)
50
+
51
+
52
+
53
+ #4 利用後に後始末
54
+
55
+ if evince_GO:
56
+
57
+ evince_GO.kill()
58
+
59
+ evince_GO = None
60
+
61
+
62
+
63
+ ```