![Glade,用代码快速更改图像](https://linux22.com/image/1042743/Glade%EF%BC%8C%E7%94%A8%E4%BB%A3%E7%A0%81%E5%BF%AB%E9%80%9F%E6%9B%B4%E6%94%B9%E5%9B%BE%E5%83%8F.png)
我已经快速创建了默认的 ubuntu 应用程序模板,并且正在尝试研究如何通过代码更改显示的图像。
默认图像显示 glade 内的 ubuntu 徽标及其路径“.../media/background.png”。
如果我打开项目窗口 python 文件(testWindow.py,因为项目名称是 test)并在 finish_initializing 函数的基础上添加以下几行(在创建的默认文件中不进行任何其他更改),
self.PNG = self.builder.get_object("image1")
self.PNG.set_from_file("../media/background.png")
程序运行,但没有显示 ubuntu 徽标,而是显示小的缺失文件图标。但是,终端中没有显示任何错误消息,将 png 文件更改为另一个 png,或将其移动到与 python 文件相同的目录(将第二行文件更改为“background.png”)也会出现同样的问题。我可以使用 clear() 函数成功删除图像,但我显然做错了什么,而且我似乎无法在图像小部件的文档中取得任何进展。
为了帮助您了解我的目标,我正在尝试创建一个简单的抽认卡程序,显示一个日语字符并要求用户输入正确的发音,如果用户成功则显示另一个新字符的图像。
感谢您提供的任何帮助!
答案1
您给出的路径set_from_file
是相对于 glade 文件而不是 python 文件的。无论如何,最好使用完整路径,因为使用相对路径通常会在运行已安装的应用程序时出现问题。Quickly 提供了一个很好的辅助函数,可为您提供文件data/
夹中文件的完整路径。尝试:
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)