2013-03-10 2 views
1

저는 PyQt4를 사용하여 백그라운드에서 실행되는 프로그램을 만들었습니다. 시스템 트레이 아이콘은 트레이에서 생성 및 배치 된 후 메인 프로그램과 상호 작용할 수있는 별도의 스레드에 생성됩니다. 우분투 10.04에서는 이전에이 문제가 없었습니다. 그러나 최근 Ubuntu 12.04로 업그레이드했는데 어떤 이유로 QSystemTrayIcon 추적이 필요하지 않습니다. 아무도 여기에 정확히 무슨 일이 일어나는지에 관해 나를 단서 줄 수 있습니까? AskUbuntu에 대한 내 질문에 대한 게시물을 찾았지만 내 문제와 일치하는 데이터베이스에서 아무것도 찾을 수 없습니다. 내가 생각하는 내 코드의 일부만을 포함 시켰지만 필요한 경우 더 많은 정보를 제공 할 것입니다.QSytemTrayIcon이 Ubuntu 12.04에 나타나지 않습니다.

편집 : 이미 우분투에서 트레이 패널 화이트리스트를 수정하고 ['all']으로 설정 했으므로 문제점이 아닌 것으로 확인할 수있었습니다. 코드의

관련 부분 :에

class notify(threading.Thread, QtGui.QSystemTrayIcon): 
    def __init__(self, process, iconMain, iconNew, parent=None): 
     threading.Thread.__init__(self) 
     QtGui.QSystemTrayIcon.__init__(self, iconMain, parent) 

     self.menu = QtGui.QMenu(parent) 
     self.menuNew = QtGui.QMenu(parent) 

     viewAdsAction = self.menu.addAction("View Ads") 
     textModeAction = self.menu.addAction("Text-Mode") 
     exitAction = self.menu.addAction("Exit") 
     textModeActionNew = self.menuNew.addAction("PC-Mode") 
     exitActionNew = self.menuNew.addAction("Exit") 

     self.iconMain = iconMain 
     self.iconNew = iconNew 
     self.setContextMenu(self.menu) 
     self.process = process 
     self.textMode = False 

실행 주() : 내 문제를 해결

def main(): 
    os.chdir(os.getenv("HOME") + "/.Phones") 
    beginMain = mainProgram() 
    beginMain.start() 
    app = QtGui.QApplication(sys.argv) 

    w = QtGui.QWidget() 

    notifications = notify(beginMain, QtGui.QIcon("icon-58x58.xpm"), QtGui.QIcon("notify.xpm"), w) 
    notifications.show() 
    notifications.start() 

    sys.exit(app.exec_()) 
+0

'class notify (threading.Thread, QtGui.QSystemTrayIcon)'이것은 매우 이상하게 보입니다. 정말로 다른 두 개의 클래스에서 상속 받기를 원하십니까? – warvariuc

+0

@warwaruk, 무한 루프를 통해 검사를 수행하고 해당 루프와 상호 작용하기 위해 QSystemTrayIcon을 사용하는 스레드를 실행하려고했습니다. 괜찮아. 아직 문제 없어. – eazar001

+0

부모 클래스가 구현되지 않아 매우 복잡하고 속성 충돌이 발생할 수 있으므로 특히 자신의 클래스를 추가 할 때 위험하다고 생각합니다. 어느 시점에서 추적 가능한 문제가있을 수 있습니다. – warvariuc

답변

1

, 해상도는 쓰레기였다. 분명히 Qt와 Unity는 특정 해상도를 얻지 못했지만, 나는 58x58 크기의 아이콘을 돌리고있었습니다. 48x48 크기로 축소 했으므로 이제 시스템 트레이 아이콘이 보이고 내 프로그램에서 제대로 작동합니다.

관련 문제