web-dev-qa-db-ja.com

Glade、コードで画像をすばやく変更

私はすばやく使用してデフォルトのubuntuアプリケーションテンプレートを作成しました。表示されている画像をコードで変更する方法を考えています。

デフォルトの画像では、glade内のパスが ".../media/background.png"のubuntuロゴが表示されています。

プロジェクトウィンドウを開く場合pythonファイル(プロジェクト名はtestWindowであるのでtestWindow.py)で、finish_initializing関数のベースに次の行を追加します(作成されたデフォルトファイル内の他の部分は何も変更しません)。 、

self.PNG = self.builder.get_object("image1")
self.PNG.set_from_file("../media/background.png")

プログラムは実行されますが、ubuntuロゴの代わりに、不足している小さなファイルアイコンが表示されます。ただし、ターミナルにエラーメッセージが表示されず、pngファイルを別のpngに変更するか、pythonファイルと同じディレクトリに移動します(2行目のファイルを "background.png"に変更))同じ問題が発生します。clear()関数を使用して画像を正常に削除できますが、明らかに問題があり、画像ウィジェットのドキュメントに進むことができません。

私が何をしようとしているのかを知るのに役立つ場合は、簡単なフラッシュカードプログラムを作成して、日本語の文字を表示し、ユーザーに正しい発音を入力するように要求し、ユーザーが新しい文字の別の画像を表示するようにします成功した。

あなたが与えることができるあらゆる助けをありがとう!

2
wnaftw

指定するパスset_from_fileはGladeファイルからの相対パスですが、pythonファイルからの相対パスではありません。相対パスを使用すると問題が発生することが多いため、とにかく絶対パスを使用することをお勧めします。インストールされたアプリケーションを実行します。data/フォルダにあるファイルの完全パスを取得するためのNiceヘルパー関数をすばやく提供します。次のことを試してください:

from test_lib.testconfig import get_data_file

[....]   

    self.image = self.builder.get_object("image1")
    self.background = get_data_file("media/background.png")
    self.image.set_from_file(self.background)
1
andrewsomething