質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

1回答

3920閲覧

pythonでスライドショー作成方法

kawauso

総合スコア56

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

1クリップ

投稿2017/07/23 08:21

お世話になっております。
python3.6にてスライドショーを作成したいと思っております。
しかし、pythonで本格的なプログラムを書いたことはなく、
普段はC#でWPFなどのプログラムを書いています。

仕様としては、
・任意のタイミングで開始・終了
・GLFW3を用いて書かれた既存のコードから呼び出したい。
・最大化表示
・アスペクト比保持
・30FPS程の精度で制御したい
・画像によって表示時間が異なる
開始 → 画像a:1000ms → 画像b:500ms → 画像c:2000ms → 終了
・Ubuntu16.04 lts python3.6環境で動作させたい

そこで質問なのですが、
(1)上記の仕様をpythonにてGUIを作成しするにあたり、ライブラリはkivyで問題ないでしょうか?
上記の仕様なら別のライブラリの方が楽。などがあれば教えてください。

(2)30FPS精度で画像によって表示時間が異なる を満たすためにはどのように書けばよろしいでしょうか?
フレームごとに表示する画像を保持して30FPS精度でループを回し描画していく方法が思いつくのですが、あまりスマートではないような気がします。

拙い文章で申し訳ございませんが、
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

(1)についてですが多分Kivyで出来るかと思います

多分とした理由は質問の以下の内容の意味がよく分からなかったためです

>・GLFW3を用いて書かれた既存のコードから呼び出したい。

もしかして「pythonのGLFW3のラッパーしたglewライブラリーを用いてレンダリングしたものをKivyで表示したいという意味でしょうか?」
だとすると、KivyだとImageを使うとできます。

参考:

(2)についてはFPSは1秒間に画面を何フレーム表示するかで、画像を何秒継続して表示するかはタイマーを
使って表示します。

KivyだとClock object(https://pyky.github.io/kivy-doc-ja/api-kivy.clock.html)のschedule_interval()
を使って起動時に1msごとに表示する設定にして、起動からの時間をカウントして、特定の時間を過ぎれば画像を切り替えるようにすればいいかと思います。

もしKivyで表示することを仮定すると以下になるかと思います。

①FPSを30に設定する
Kivyはconfigのmaxfpsで最大FPSを設定しています。デフォルトは60なのでこれを30に変更します。

②起動時にタイマーを設定する
KivyのAppクラスは起動時に開始する「on_start」イベントがありますのでそこでタイマーを設定します。

③タイマーの種類について
定期的に動くインターバルタイマーを設定します
schedule_interval()

④スライドについて
スライドはScreen Managerを使用します。
「current」というプロパティの値が現在のスライドですので、あとは③で計測した値が特定の値以上になったら「current」の値を変更すればスライドが切り替わります。

こんな感じでしょうか。

投稿2017/07/27 13:19

dario_okazaki

総合スコア282

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kawauso

2017/07/28 10:10

丁寧な回答・解説ありがとうございます。 とても参考になりました。 実装がんばりたいと思います。
dario_okazaki

2017/07/28 11:53 編集

すいません。今、質問を見直しましたら(2)の一定時間が過ぎたら自動で切り替わるスライドをKivyの実装方法に関してはすでに同じ質問がありそちらの方が回答も丁寧でわかりやすいのでそちらを参考して見てください。実装したコードも載っております。 質問名:kivy: コードをどこに書けばいいのかわかりません;_; リンクURL: https://teratail.com/questions/57323)
kawauso

2017/07/28 22:49

ご丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問