我知道这很简单,只需使用命令self.set_icon_from_file("icon.png"),但我的程序仍然不显示图标.我确保icon.png与Python文件位于同一个工作目录中.我也试过提供完整的文件路径,但它仍然没有显示图标.
如果有帮助并使用Python V2.6,我正在使用Ubuntu 10.10.我使用Glade Interface Designer来设计GUI.但是,我尝试使用Glade并使用上面的命令设置图标.
我希望我提供了足够的信息.
编辑:我有状态图标在我的程序中工作..但在问题中我的意思是程序图标显示在任务栏中,也在应用程序栏的左侧.
我确保icon.png位于python文件的同一个工作目录中.
这可能是您的问题 - 相对于Python 解释器的工作目录查找路径,而不是包含代码的文件.我经常发现自己定义了一个函数:
def get_resource_path(rel_path):
dir_of_py_file = os.path.dirname(__file__)
rel_path_to_resource = os.path.join(dir_of_py_file, rel_path)
abs_path_to_resource = os.path.abspath(rel_path_to_resource)
return abs_path_to_resource
Run Code Online (Sandbox Code Playgroud)
我实际上并不是那么冗长,但希望变量名称可以清楚地表明发生了什么.此外,获取绝对路径并非绝对必要,但如果需要调试可能会有所帮助.
然后你可以这样做:
self.set_icon_from_file(get_resource_path("icon.png"))
Run Code Online (Sandbox Code Playgroud)
更新:这是一个演示程序."icon.png"与此脚本位于同一目录中,我使用它运行它./gtktest.py.我在左上角看到了图标(我主题的标准位置).icon.png只是在Inkscape中绘制的形状并导出为位图(无论如何它也适用于原始SVG).
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
class HelloWorld:
def delete_event(self, widget, event, data=None):
return False
def destroy(self, widget, data=None):
gtk.main_quit()
def __init__(self):
# create a new window
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_icon_from_file('icon.png')
self.window.connect("delete_event", self.delete_event)
self.window.connect("destroy", self.destroy)
# Creates a new button with the label "Hello World".
self.button = gtk.Button("Hello World")
self.window.add(self.button)
self.button.show()
self.window.show()
def main(self):
gtk.main()
if __name__ == "__main__":
hello = HelloWorld()
hello.main()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9411 次 |
| 最近记录: |