2012-04-30 30 views
9

私のプログラムを実行しているうちに、pygame.display.set_icon(icon)で設定したアイコンはウィンドウにのみ表示されます。タスクバーでは、デフォルトのpythonアイコンは変わりません。タスクバーに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 - haha​​!うん..恥ずかしい、本当に...私はコードの*右*一部を今すぐ包んだ。 – 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どのように動作するのかわかりません:doc: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

@PenguinCoder私はpyinstallerを使用していませんでした。私は今日、タスクバーがこのように設定されることができるように私のプログラムをパッケージ化しようとしている間に実現しました。 – Zack

2

thisと表示される場合があります。基本的に、ウィンドウがタスクバーアイコンを設定するとき、それは使用するアイコンを決定するために様々な巧妙なアルゴリズムを使用します。この理由は、複数のアプリケーションインスタンス(複数のpythonウィンドウ)がグループ化されるためです。これは一般に、ファイル拡張子(.pyまたは.pyw)に応じて、pythonアプリケーションのアイコンがpython.exeまたはpythonw.exeのアイコンに設定されていることを意味します。ただし、回避策があります。タスクバーのアイコンがApp User Modelsではなく、特定の実行ファイルで設定されているので、​​モジュールを使用して、アプリケーションのユーザーモデルを変更することが可能である:

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

だから、本当に窓の事のようにpygameの事をそれほどではありません一般的に。

関連する問題