2010-12-02 21 views
2

トレイにウィンドウを最小化しようとしていますが、タスクバーから隠すことを拒否しているようです。私はちょっと時間を費やして、問題のコードをこれまで蒸留しました。これは、私は、Windows 7でタスクバーからウィンドウを非表示

import sys, os 
from PyQt4 import uic 
from PyQt4.QtGui import QMainWindow, QApplication 

class MyClass(QMainWindow): 
    def __init__(self, parent = None): 
     QMainWindow.__init__(self, parent) 
     self.ui = uic.loadUi(os.path.join("gui", "timeTrackerClientGUI.ui"), self) 
    def hideEvent(self, event): 
     self.hide() 
    def showEvent(self, event): 
     self.show() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    wnd = MyClass() 
    wnd.show() 
    app.exec_() 

をトレイに私のアプリを非表示にする何か他のものを必要とする場合、私は、タスクバーのアイコンをクリックすると、それは、アプリケーションアイコンを非表示にしないようだが、その後、別の1がポップアップmcuhので、私は思ったんだけどではありません私はこれらの2つのアイコンがちらつく得ることができ、複数回、最初のものは非表示になります前にsplitsecondのために一種の次のようになります。

showEventでの表示/非表示()/ hideEventを(呼び出し

alt text

答えて

2

です代わりに代わりの機能:

def hideEvent(self, event): 
    self.hide() 
    if ph.is_windows(): 
     self.hidden = True 
     self.setWindowFlags(Qt.ToolTip) 
def showEvent(self, event): 
    if ph.is_windows() and self.hidden: 
     self.setWindowFlags(Qt.Window) 
     self.hidden = False 
    self.show() 
1

)は意味がありません。 - これらのイベントは、show()/ hide()呼び出しの結果であり、トリガーではありません。トレイアイコンをクリックしてウィンドウの表示を切り替えるには、ウィジェットでsetVisible(!isVisible())を試してください。ウィンドウの閉じるボタンをクリックしたときにウィンドウを非表示にするには、closeEvent()を再実装してみてください:

Pythonで
MyMainWindow::closeEvent(QCloseEvent* e) { 
    hide(); 
    e->accept(); 
} 

、それはそれは誰もが興味を持っている場合は、pHが私のプラットフォーム固有のモジュールであり、あなたがplatform.nameを使用することができ、最終的なコードを、それが作業を取得するために非常に醜いハックを取ったが、ここだ

def closeEvent(self, event): 
    self.hide() 
    event.accept() 
+0

私はそれを最小化するとタスクバーに表示されないようにウィンドウを非表示にしたい。 – dutt

+0

私の知る限り、最小化されたウィンドウは常にタスクバーに表示されます。削除する場合は、非表示にする必要があります。また、最小化ボタンをクリックすると消えてしまい、UIアプリケーションでうまく動作していないと考えられます。それを削除したい場合は、最小化する代わりに閉じなければなりません。 (つまり、私は正規のWindowsユーザーではない、おそらく私はここでいくつかの事実上のインターフェイスのガイドラインを逃した)。本当にそれをしたいのであれば、QWindowStateChangeEventを受信する必要があります。つまり、受信時にhide()を呼び出し、イベントを無視する必要があります。 –

+0

http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qwidget.html#hideEventウィンドウが自発的な非表示イベントを受け取った後、ユーザーがウィンドウを最小化するので、タスクバーから非表示にしたいトレイアイコンのみを表示していますが、hide()とsetVisible(False)の両方を試しましたが、タスクバーから隠すものはありません。 Frank:私は、トレイに最小化を実装しようとしています。これは、一般的にウィンドウで選択できる動作です。 – dutt

関連する問題