2009-06-15 25 views
8

Tôi đang viết một chương trình cơ bản trong python bằng mô-đun PyQt4. Tôi muốn có thể sử dụng biểu tượng của chủ đề hệ thống của tôi cho những thứ như biểu tượng của hộp thoại ưu tiên, nhưng tôi không biết làm cách nào để thực hiện việc này. Vì vậy, câu hỏi của tôi là, làm thế nào để bạn có được vị trí của một biểu tượng, nhưng chắc chắn rằng nó thay đổi với chủ đề biểu tượng của hệ thống? Nếu nó quan trọng, tôi đang phát triển điều này dưới ubuntu 9,04, vì vậy tôi đang sử dụng máy tính để bàn gnome.Biểu tượng chủ đề hệ thống và PyQt4

Trả lời

7

Thật không may, Có vẻ như Qt không hỗ trợ nhận biểu tượng cho một chủ đề cụ thể. Có nhiều cách để làm điều này cho cả KDE và Gnome.

Cách KDE khá thanh lịch, có ý nghĩa khi xem xét Qt là bộ công cụ của KDE. Thay vì sử dụng lớp QQcon của PyQt4.QtGui, thay vào đó bạn sử dụng lớp KIcon PyKDE4.kdeui. Ví dụ về điều này là:

from PyKDE4.kdeui import * 
icon = KIcon("*The Icon Name*") 

xem tài liệu PyKDE cho lớp này, here.

Một cách để nhận hỗ trợ cho điều này cho gnome là sử dụng gói gtk python. Nó không phải là tốt đẹp như cách kde, nhưng nó hoạt động không kém. Nó có thể được sử dụng như thế này:

from PyQt4 import QtGui 
from gtk import icon_theme_get_default 

iconTheme = icon_theme_get_default() 
iconInfo = iconTheme.lookup_icon("*The Icon Name*", *Int of the icon size*, 0) 
icon = QtGui.QIcon(iconInfo.get_filename()) 

Xem tài liệu cho Icon Theme classIcon Info class.

EDIT: cảm ơn cho CesarB chỉnh

+0

Qt là bộ công cụ của KDE, không phải trình quản lý cửa sổ. – CesarB

+3

Cú pháp mới là 'QIcon.fromTheme ('icon_name', dự phòng)'. Đã cho tôi một thời gian để tìm thấy nó! – Blender

0

Sử dụng các lớp PyKDE4 KIcon:

http://api.kde.org/pykde-4.2-api/kdeui/KIcon.html

+0

Cảm ơn cho câu trả lời :) Mặc dù tôi muốn một cái gì đó ít phụ thuộc vào KDE, tôi sẽ chấp nhận điều này là câu trả lời cho đến khi một cái gì đó tốt hơn đến xung quanh. – Cdsboy

0

tôi đã dành một số tiền khá nghiên cứu này bản thân mình cách đây không lâu, và kết luận của tôi là, không may, Qt không cung cấp chức năng này trong một thập tự giá thời trang nền tảng. Lý tưởng nhất là lớp QIcon sẽ có mặc định cho tập tin mở, lưu, '+', '-', sở thích, vv, nhưng xem xét nó không bạn sẽ phải lấy biểu tượng thích hợp cho môi trường máy tính để bàn của bạn.

+0

Tôi đã đi đến kết luận tương tự. Tôi sẽ viết một câu trả lời bao gồm các phương thức cho cả KDE và Gnome. – Cdsboy

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