2013-04-29 33 views
5

Tôi đang phát triển một ứng dụng trong python và nó sẽ được sử dụng trong Windows MacOsX và Linux, và bây giờ tôi đang phát triển biểu tượng (biểu tượng trạng thái) (và menu khi bạn nhấp) trong thanh Mac OSX. Tôi có thể sử dụng PyGTK trong cửa sổ, mac và linux và sử dụng cùng mã cho biểu tượng trạng thái hiển thị trên thanh trạng thái (macosx), khay hệ thống (cửa sổ) hoặc Linux không?Biểu tượng trạng thái trong GTK + trên MacOSX, Windows và Linux (Gnome) và python

Xin cảm ơn trước. Đây là mã:

import gtk 


class SystrayIconApp: 
    def __init__(self): 
     self.tray = gtk.StatusIcon() 
     self.tray.set_from_stock(gtk.STOCK_ABOUT) 
     self.tray.connect('popup-menu', self.on_right_click) 
     self.tray.set_tooltip(('Sample tray app')) 


     def on_right_click(self, icon, event_button, event_time): 
      self.make_menu(event_button, event_time) 

     def make_menu(self, event_button, event_time): 
      menu = gtk.Menu() 

      # show about dialog 
      about = gtk.MenuItem("About") 
      about.show() 
      menu.append(about) 
      about.connect('activate', self.show_about_dialog) 

      # add quit item 
      quit = gtk.MenuItem("Quit") 
      quit.show() 
      menu.append(quit) 
      quit.connect('activate', gtk.main_quit) 

      menu.popup(None, None, gtk.status_icon_position_menu, 
        event_button, event_time, self.tray) 

    def show_about_dialog(self, widget): 
     about_dialog = gtk.AboutDialog() 
     about_dialog.set_destroy_with_parent (True) 
     about_dialog.set_icon_name ("SystrayIcon") 
     about_dialog.set_name('SystrayIcon') 
     about_dialog.set_version('0.1') 
     about_dialog.set_copyright("(C) 2010 João Pinto") 
     about_dialog.set_comments(("Program to demonstrate a system tray icon")) 
     about_dialog.set_authors(['João Pinto <[email protected]>']) 
     about_dialog.run() 
     about_dialog.destroy() 

if __name__ == "__main__": 
    SystrayIconApp() 
    gtk.main() 

Đây là de khay trong MAC OS X (ngôi sao từ gtk +):

This is system tray in MAC OS X

Đây là khay trong WINDOWS (ngôi sao từ gtk +):

This is the tray in WINDOWS

trên cửa sổ không có vấn đề, menu hiển thị khi bạn nhấp vào biểu tượng, nhưng trong Mac OX, ICOS là s như thế nào nhưng menu không được hiển thị.

Sự cố với mã là gì?

+0

Bạn có ý nghĩa gì với "biểu tượng thanh trạng thái"? Các biểu tượng được hiển thị trong khay hệ thống trong Windows? Vì hành vi này chỉ tồn tại trong Windows, bạn không có bất kỳ biểu tượng nào trong khay hệ thống trên Gnome nữa (3.4+). Có lẽ bạn đang nói về biểu tượng của ứng dụng? – halflings

+0

Biểu tượng ngôi sao trên hình ảnh phía trên – ManuParra

+0

Xin chào, bạn có tìm thấy giải pháp nào không? Để thêm biểu tượng chỉ báo trên OSX bằng Python Gtk (hoặc PyGObject/Gtk + 3). –

Trả lời

-3

Câu trả lời ngắn gọn: Có!

Qt quản lý tích hợp biểu tượng trạng thái trong tất cả các hệ điều hành tương thích.

Bạn chỉ cần sử dụng lớp học QSystemTrayIcon để thực hiện việc đó.

Lớp QSystemTrayIcon cung cấp biểu tượng cho ứng dụng trong khay hệ thống. Hệ điều hành hiện đại thường cung cấp một vùng đặc biệt trên màn hình, được gọi là khay hệ thống hoặc vùng thông báo, nơi các ứng dụng chạy dài có thể hiển thị biểu tượng và tin nhắn ngắn.

Thông tin thêm về số Qt Documentation.

+0

Nhưng tôi muốn làm một ứng dụng thương mại, và QT không phải là miễn phí, đó là sự thật ?. Có thư viện GPL Qt mà tôi có thể sử dụng cho Ứng dụng của tôi và tôi đã hạn chế giới hạn này? – ManuParra

+0

Qt là LGPL. Vì vậy, bạn có thể tự do sử dụng nó cho một ứng dụng thương mại. Thông tin thêm về câu hỏi SO này: http://stackoverflow.com/questions/352896/qt-commercial-licenses – halflings

+0

Ok, nhưng không phải PyQt thay vì pyside – ManuParra

-6

Có một lỗi thụt đầu dòng trên thuộc tính click chuột phải, và cũng có thể bạn cần bao gồm:

/usr/bin/python

-- mã hóa: utf-8 --

ở đầu tập lệnh.

+2

Tôi nghĩ rằng nó không liên quan gì đến câu hỏi – carpinchosaurio

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