मैंने यह सुनिश्चित किया है कि icon.png पाइथन फ़ाइल की एक ही कार्य निर्देशिका में है।
यह आपकी समस्या हो सकता है - पथ अजगर दुभाषिया की कार्यशील निर्देशिका के सापेक्ष देखा जाता है, नहीं फ़ाइल कोड युक्त। मैं अक्सर अपने आप की तरह एक समारोह को परिभाषित:
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
मेरा वास्तव में काफी है कि वर्बोज़ नहीं है, लेकिन उम्मीद है कि चर नाम यह स्पष्ट क्या हो रहा है बनाते हैं। साथ ही, पूर्ण पथ प्राप्त करना सख्ती से जरूरी नहीं है, लेकिन अगर आपको डीबग करने की आवश्यकता हो तो मदद मिल सकती है।
तो फिर तुम सिर्फ कर सकते हैं:
self.set_icon_from_file(get_resource_path("icon.png"))
अद्यतन: यहाँ एक डेमो कार्यक्रम है। "icon.png" इस स्क्रिप्ट के समान निर्देशिका में है, और मैं इसे ./gtktest.py
का उपयोग करके चलाता हूं। मैं ऊपरी बाएं कोने में आइकन देखता हूं (मेरी थीम के लिए मानक स्थान)। icon.png
सिर्फ इंकस्केप में खींचा गया एक आकार है और बिटमैप के रूप में निर्यात किया जाता है (यह मूल एसवीजी के साथ भी काम करता है)।
#!/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()
'self' क्या है? – detly
मैं इसे "स्वयं" – Nik