質問編集履歴
1
書式の改善
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
Pythonのプログラムが実行される順番で困っています
|
body
CHANGED
@@ -1,16 +1,27 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
PythonのTkinterで、
|
3
|
+
PythonのTkinterで、以下のような機能を実現したいです。
|
4
4
|
|
5
|
+
0. ボタンを押す
|
6
|
+
0. ラベルを書き換える(歌詞を表示する)
|
7
|
+
0. 音楽を再生する
|
8
|
+
|
5
9
|
### 発生している問題・エラーメッセージ
|
6
10
|
|
7
11
|
ボタンを押した後、音楽が鳴り終わった後にラベルが変更されてしまうので、ラベルを変更してから音楽が流れるようにしたい。
|
8
12
|
|
13
|
+
||現状|目標|
|
14
|
+
|--:|:--|:--|
|
15
|
+
|1|ボタンを押す|ボタンを押す|
|
16
|
+
|2|音楽の再生が始まる|ラベルを書き換える|
|
17
|
+
|3|音楽の再生が終わる|音楽の再生を始める|
|
18
|
+
|4|ラベルが変更される|音楽の再生を終える|
|
19
|
+
|
9
20
|
### 該当のソースコード
|
10
21
|
|
11
22
|
ボタンを押すと`play_game`が呼び出されます。`play_game`の中では、ラベルを変更する関数`change_label`をthreadを用いて呼び出し、さらに音楽を再生する関数`play_music`を呼び出しています。しかし、実際には音楽の再生→ラベルの変更の順で呼び出されてしまいます。
|
12
23
|
|
13
|
-
`play_game`の中の`lyric[1]`には歌詞(ラベルを書き換える文字)が、`lyric[2]` `lyric[3]`には音楽の再生開始位置と終了位置(ミリ秒)が、`lyric[5]`にはファイル名が入っています。
|
24
|
+
`play_game`の中の`lyric[1]`には歌詞(ラベルを書き換える文字)が、`lyric[2]` `lyric[3]`には音楽の再生したい部分の開始位置と終了位置(ミリ秒)が、`lyric[5]`にはファイル名が入っています。
|
14
25
|
|
15
26
|
```Python
|
16
27
|
import sqlite3
|