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
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 class và Icon Info class.
EDIT: cảm ơn cho CesarB chỉnh
Sử dụng các lớp PyKDE4 KIcon:
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
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.
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
- 1. Biểu tượng khay hệ thống trong C++
- 2. Làm cách nào để xác định tài nguyên biểu tượng trên cơ sở chủ đề cho mỗi hệ thống?
- 3. Hệ thống biểu tượng trên khay trong ứng dụng Node.js
- 4. Làm mới biểu tượng khay hệ thống theo chương trình
- 5. Bàn phím hệ thống Metro chủ đề không thay đổi
- 6. Mở cửa sổ từ biểu tượng Khay hệ thống
- 7. Biểu tượng cửa sổ của Exe trong PyQt4
- 8. Các nút và biểu tượng của Hệ thống SDK được cung cấp
- 9. Hệ thống đề xuất sử dụng Solr và Mahout
- 10. Tải các menu và thanh công cụ WinForms để sử dụng chủ đề hệ thống?
- 11. IntPtr.ToInt32() và x64 hệ thống
- 12. java.lang.RuntimeException: máy chủ hệ thống đã chết?
- 13. Hệ thống theo dõi vấn đề?
- 14. Xóa biểu tượng khỏi thanh tiêu đề Windows mà không bỏ qua nút đóng hoặc menu hệ thống?
- 15. Mutex truy cập và hệ thống gọi
- 16. Backbone.js và hệ thống phân cấp/cây
- 17. Vấn đề về thiết kế: Hệ thống đặt trước
- 18. Đề xuất hệ thống ghi nhật ký sự kiện phía máy chủ cho iOS
- 19. Xây dựng một hệ thống phân cấp chủ đề để lập chỉ mục nội dung
- 20. Hệ thống biểu tượng giao diện người dùng jQuery có biểu tượng "trống" - một biểu tượng không có hình ảnh không?
- 21. Biểu tượng Khay hệ thống Java trên MacOS 10.7.4 không hiển thị hình động gif
- 22. Tách tên tệp bằng biểu tượng dấu phân cách tệp hệ thống
- 23. Làm cách nào để yêu cầu Windows kích thước biểu tượng khay hệ thống?
- 24. Làm thế nào để hiển thị biểu tượng hệ thống cho một tệp trong SWT?
- 25. Làm cách nào để hiển thị biểu tượng khay hệ thống cho dịch vụ C# window.?
- 26. Biểu tượng khay hệ thống bị thiếu trên Fedora 19 Desktop Edition
- 27. Làm thế nào để thêm ContextMenu vào biểu tượng khay hệ thống theo lập trình?
- 28. Làm việc với các biểu tượng hệ thống trong ứng dụng C#
- 29. Mối quan hệ với chủ đề Java
- 30. Hệ thống phân phối Java
Qt là bộ công cụ của KDE, không phải trình quản lý cửa sổ. – CesarB
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