저는 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_())
'class notify (threading.Thread, QtGui.QSystemTrayIcon)'이것은 매우 이상하게 보입니다. 정말로 다른 두 개의 클래스에서 상속 받기를 원하십니까? – warvariuc
@warwaruk, 무한 루프를 통해 검사를 수행하고 해당 루프와 상호 작용하기 위해 QSystemTrayIcon을 사용하는 스레드를 실행하려고했습니다. 괜찮아. 아직 문제 없어. – eazar001
부모 클래스가 구현되지 않아 매우 복잡하고 속성 충돌이 발생할 수 있으므로 특히 자신의 클래스를 추가 할 때 위험하다고 생각합니다. 어느 시점에서 추적 가능한 문제가있을 수 있습니다. – warvariuc