2010-12-11 13 views
6

में एक प्रोग्राम आइकन जोड़ना मुझे पता है कि यह बहुत आसान है, बस self.set_icon_from_file("icon.png") कमांड का उपयोग करें, हालांकि मेरा प्रोग्राम अभी भी आइकन प्रदर्शित नहीं करता है। मैंने सुनिश्चित किया है कि icon.png एक ही काम करने वाली निर्देशिका में पाइथन फ़ाइल के रूप में है। मैंने पूरा फ़ाइल पथ देने का भी प्रयास किया, लेकिन फिर भी यह आइकन प्रदर्शित नहीं करता है।पायथन जीटीके

मैं उबंटू 10.10 का उपयोग कर रहा हूं यदि वह पाइथन वी 2.6 की मदद करता है और उपयोग करता है। मैं GUI डिज़ाइन करने के लिए Glade Interface Designer का उपयोग करता हूं। हालांकि, मैंने ग्लैड का उपयोग करके और उपरोक्त आदेश का उपयोग करके आइकन सेट करने का प्रयास किया।

मुझे आशा है कि मैंने पर्याप्त जानकारी प्रदान की है।

संपादित करें: मुझे अपने कार्यक्रम में काम करने के लिए स्थिति आइकन मिला है .. हालांकि सवाल में मेरा मतलब था कि टास्क बार में प्रदर्शित प्रोग्राम आइकन और एप्लिकेशन बार के बाईं तरफ प्रोग्राम आइकन था।

+0

'self' क्या है? – detly

+0

मैं इसे "स्वयं" – Nik

उत्तर

6

मैंने यह सुनिश्चित किया है कि 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() 
+0

नहीं, यह काम नहीं करता है। बात यह है कि जब मैं स्थिति आइकन छवि को आज़माता हूं, तो मैं फ़ाइल फ़ाइल को छवि नाम के रूप में देता हूं और यह पूरी तरह से काम करता है। यह सिर्फ प्रोग्राम आइकन के साथ नहीं है। मैंने रूट से पूरे पथ का नाम देने की कोशिश की। अभी भी इसे काम करने के लिए नहीं मिल सकता है। – Nik

+0

मुझे लगता है कि मेरे पास काम पर कुछ नमूना कोड है, इसलिए मैं इसे कम कर दूंगा और कल इसे पोस्ट करूंगा। – detly

+0

@Nik - कुछ डेमो कोड पोस्ट करें - मुझे बताएं कि यह आपके लिए काम करता है या नहीं। – detly

2

मुझे यकीन है कि क्या आइकन आप बना रहे हैं नहीं हूँ, लेकिन टास्कबार आइकन के इस सबसे छोटे PyGTK आइकन-दिखा उदाहरण कोशिश मैं के बारे में सोचा है

#!/usr/bin/env python 
import pygtk 
pygtk.require('2.0') 
import gtk 

# create icon object 
statusIcon = gtk.StatusIcon() 

# load it 
statusIcon.set_from_file("icon.ico") 

# show it 
statusIcon.set_visible(True) 

# and run main gtk loop 
gtk.main() 

हो सकता है कि तुम सिर्फ आदेश याद statusIcon.set_visible(True)

+0

का उपयोग कर वर्तमान विंडो के प्रोग्राम आइकन को सेट करने के लिए कह रहा हूं आप सिस्टम ट्रे आइकन के बारे में क्यों बात कर रहे हैं? – detly

+1

क्योंकि आपने यह निर्दिष्ट नहीं किया था कि आपके मन में कौन सा आइकन था और मैं आपकी मदद करना चाहता था। मेरा उदाहरण सिस्टम टास्क बार के लिए एक आइकन है। उम्मीद है कि यह मदद की। –

0

मानक आइकन के लिए, stock items उपयोग करते हैं, और उसे अपनी आवश्यकताओं माउस पाते हैं। कि जिस तरह से

  • आप अपने कार्यक्रम
  • whith चिह्न पैक करने के लिए नहीं है माउस उपयोगकर्ता के विषय के अनुसार बदल और उसके वातावरण में अच्छी तरह से घुलमिल जाएंगे।
PyGTK के लिए

:

gtk.icon_theme_get_default().load_icon("folder-open", 128, 0) 
संबंधित मुद्दे