2012-04-30 87 views
9

Trong khi chạy chương trình của tôi, biểu tượng tôi đã cấu hình với pygame.display.set_icon(icon) chỉ hiển thị trong cửa sổ. Trong thanh tác vụ, biểu tượng python mặc định vẫn giữ nguyên.Có cách nào để đặt biểu tượng Pygame trong thanh tác vụ không? set_icon() chỉ dường như ảnh hưởng đến biểu tượng nhỏ trong cửa sổ thực tế

Có cách nào để thay đổi điều đó không?

Nguồn:

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! Yeah .. Xấu hổ, thực sự ... Tôi đã có * quyền * một phần của mã gói lên bây giờ .. – Zack

+0

Tôi không thấy bất kỳ thay đổi nào liên quan đến các trường hợp ngoại lệ ... – lunaryorn

+0

@lunaryorn - Tôi đang đề cập đến máy địa phương .. Nhưng mã bây giờ cũng đã được sửa ở đây! – Zack

Trả lời

0

Tôi nghĩ rằng để thiết lập Taskbar Biểu tượng bạn phải sử dụng set_caption.

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

Lưu ý: Đặt chú thích không đặt biểu tượng cửa sổ. Gọi cả set_icon và set_caption để đặt cả hai.

+0

Tôi vừa thử nghiệm điều này, nhưng không có nhiều may mắn. Tôi đã đăng nguồn ở trên. Nó lấy mã, và không tạo ra lỗi, nhưng biểu tượng mặc định tương tự vẫn hiển thị trong thanh tác vụ. – Zack

+0

@SuperPrograman Tôi không thấy nó hoạt động như thế nào: Từ doc: http://www.pygame.org/docs/ref/display.html#pygame.display.set_caption set_caption có thể lấy văn bản ngắn hơn trong chú thích nhưng không có biểu tượng trực tiếp. – ThePhi

7

Cuối cùng tôi đã tìm ra.

Theo như tôi có thể biết, cách duy nhất để thực sự đặt biểu tượng đó trên thanh tác vụ là trong quá trình đóng gói.

Với trình cài đặt pypler chẳng hạn, bạn sẽ gọi python pyinstaller.py --icon=icon.ico Biểu tượng ở đâu là biểu tượng bạn muốn hiển thị trên thanh tác vụ.

+0

Bạn nên chỉ định trong câu hỏi ban đầu của mình rằng bạn sử dụng mô-đun đóng gói pyinstaller. Câu trả lời chắc chắn sẽ đến sớm hơn rất nhiều. – PenguinCoder

+2

@PenguinCoder tại thời điểm viết bài gốc Tôi đã không sử dụng pyinstaller. Tôi chỉ nhận ra ngày hôm nay trong khi cố gắng gói chương trình của tôi rằng thanh tác vụ có thể được thiết lập theo cách này. – Zack

2

Bạn có thể muốn xem this. Về cơ bản, khi các cửa sổ đặt biểu tượng thanh tác vụ, nó sử dụng một loạt các thuật toán thông minh để quyết định biểu tượng sử dụng. Lý do cho điều này là để nếu bạn có nhiều phiên bản của một ứng dụng (nghĩa là nhiều cửa sổ python) chúng sẽ được nhóm lại. Điều này thường có nghĩa là biểu tượng của ứng dụng python được đặt thành biểu tượng của python.exe hoặc pythonw.exe, tùy thuộc vào đuôi tệp của bạn (.py hoặc .pyw). Có, tuy nhiên, một workaround. Bởi vì các biểu tượng trên thanh tác vụ được thiết lập bởi App User Models chứ không phải bằng cách thực thi cụ thể, nó có thể thay đổi ứng dụng của bạn Mẫu tài khoản bằng cách sử dụng ctypes mô-đun:

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

Vì vậy, nó thực sự không quá nhiều của một điều pygame như là một điều cửa sổ nói chung là.

Các vấn đề liên quan