2012-04-30 17 views
9

में छोटे आइकन को प्रभावित करने लगते हैं, जबकि मेरे प्रोग्राम को चलाने के दौरान मैं pygame.display.set_icon(icon) के साथ कॉन्फ़िगर किया गया आइकन केवल विंडो में प्रदर्शित करता है। टास्कबार में डिफ़ॉल्ट पायथन आइकन वही रहता है।क्या टास्कबार में Pygame आइकन सेट करने का कोई तरीका है? set_icon() केवल वास्तविक विंडो

क्या इसे बदलने का कोई तरीका है?

स्रोत:

import pygame 
from pygame.locals import * 
import sys, os 
import time 

pygame.init() 


# Load Images 
try: 
    bg = os.getcwd() + '\\images\\background.png' 
    background = pygame.image.load(bg).convert() 
except: 
    print 'Error: Could not find background.png' 

try: 
    logo = os.getcwd() + '\\images\\logo.png' 
    c_logo = pygame.image.load(logo).convert() 
except: 
    print 'Error: Could not find logo.png' 

try: 
    about_dialog_infile = os.getcwd() + '\\images\\about_dialog[alpha].png' 
    about_dialog = pygame.image.load(about_dialog_infile).convert_alpha() 
except: 
    pass 

i_icon = os.getcwd() + '\\images\\icon.png' 
icon = pygame.image.load(i_icon) 
pygame.display.set_icon(icon) 
pygame.display.set_caption("Test program") 
screenSize =(640,480) 

screen = pygame.display.set_mode(screenSize,0,32) 
pygame.display.set_caption('My Test Program') 



while True: 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      # sys.exit() 
     if event.type == MOUSEBUTTONDOWN: 
      check_click(about, event.pos) 


screen.blit(background, (0,0)) 

pygame.display.update() 
+0

@lunaryorn - हाहा! हाँ .. शर्मनाक, वास्तव में ... मुझे अब कोड के * दाएं * हिस्से को लपेट लिया गया है .. – Zack

+0

मुझे अपवादों से संबंधित कोई बदलाव नहीं दिख रहा है ... – lunaryorn

+0

@lunaryorn - मैं मेरा जिक्र कर रहा था स्थानीय मशीन .. लेकिन कोड अब भी तय किया गया है! – Zack

उत्तर

0

मैं टास्कबार आइकन स्थापित करने के लिए लगता है कि तुम set_caption उपयोग करना होगा।

pygame.display.set_caption("Title", get_image_file("icon.png")) 

नोट: सेट कैप्शन विंडो आइकन सेट नहीं करता है। दोनों सेट करने के लिए set_icon और set_caption दोनों को कॉल करें।

+0

मैंने अभी इसका परीक्षण किया, लेकिन इसमें बहुत भाग्य नहीं था। मैंने ऊपर स्रोत पोस्ट किया। यह कोड लेता है, और कोई त्रुटि उत्पन्न नहीं करता है, लेकिन एक ही डिफ़ॉल्ट आइकन अभी भी टास्क बार में दिखाता है। – Zack

+0

@SuperPrograman मुझे नहीं लगता कि यह कैसे काम कर सकता है: दस्तावेज़ से: http://www.pygame.org/docs/ref/display.html#pygame.display.set_caption set_caption कैप्शन में एक छोटा टेक्स्ट ले सकता है लेकिन कोई सीधे आइकन नहीं। – ThePhi

7

मैंने अंततः इसे समझ लिया।

जहां तक ​​मैं कह सकता हूं, टास्कबार में वास्तव में उस आइकन को सेट करने का एकमात्र तरीका पैकेजिंग के दौरान होता है।

उदाहरण के लिए pyinstaller के साथ, आप python pyinstaller.py --icon=icon.ico पर कॉल करेंगे आइकन आइकन जहां आप टास्क बार में प्रदर्शित करना चाहते हैं।

+0

आपको अपने मूल प्रश्न में निर्दिष्ट होना चाहिए था कि आप जहां एक pyinstaller पैक किए गए मॉड्यूल का उपयोग कर रहे हैं। जवाब शायद बहुत जल्द आ जाएगा। मूल लेखन के समय – PenguinCoder

+2

@ पेंगुइनकोडर मैं pyinstaller का उपयोग नहीं कर रहा था। मुझे अपने प्रोग्राम को पैकेज करने का प्रयास करते हुए आज ही एहसास हुआ कि टास्कबार को इस तरह से सेट किया जा सकता है। – Zack

2

आप this देख सकते हैं। अनिवार्य रूप से, जब विंडोज़ टास्कबार आइकन सेट करता है, तो यह उपयोग करने के लिए आइकन का निर्णय लेने के लिए विभिन्न चालाक एल्गोरिदम का उपयोग करता है। इसका कारण यह है कि यदि आपके पास किसी एप्लिकेशन (यानी एकाधिक पायथन विंडो) के कई उदाहरण हैं तो उन्हें समूहीकृत किया जाएगा। इसका सामान्य अर्थ यह है कि आपके फ़ाइल एक्सटेंशन (.py या .pyw) के आधार पर, एक पाइथन एप्लिकेशन का आइकन python.exe या pythonw.exe के आइकन पर सेट किया गया है। हालांकि, एक कामकाज है। क्योंकि टास्कबार आइकन बजाय विशिष्ट निष्पादन द्वारा की तुलना में App User Models द्वारा निर्धारित है, यह संभव है ctypes मॉड्यूल का उपयोग कर अपने आवेदन के उपयोगकर्ता मॉडल को बदलने के लिए:

import ctypes 
myappid = 'mycompany.myproduct.subproduct.version' # arbitrary string 
ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(myappid) 

तो यह वास्तव में तो एक खिड़कियों बात के रूप में एक pygame बातों की तरह नहीं है आम तौर पर।

संबंधित मुद्दे

 संबंधित मुद्दे