PyQt4를 사용하고 있습니다. 창을 최소화하고 최대화 할 수는 있지만 작업 표시 줄 아이콘을 클릭하여 최소화 할 수는 없습니다.작업 표시 줄의 클릭을 감지하는 방법은 무엇입니까?
프로그램은 py2exe에 의해 컴파일되고 작업 표시 줄에 "python.exe"로 표시됩니다. 클릭 이벤트를 어떻게 잡을 수 있습니까?
QWebView를 사용하고 있습니다. QWebView.event(e)
이벤트가 도움이되지 않습니다.
다음 코드는 윈도우 상태 변경 이벤트를 제공합니다 : 기존 윈도우 플래그를 덮어 쓰기 때문에 작업 표시 줄의 아이콘을 사용하여 응용 프로그램을 최소화 할 수 없습니다
...
class LauncherView(QWebView, object):
def __init__(self, QWidget_parent=None):
super(LauncherView, self).__init__(QWidget_parent)
self.setWindowFlags(Qt.FramelessWindowHint)
self.setContextMenuPolicy(Qt.CustomContextMenu)
self.resize(801, 601)
...
def event(self, e):
if e.type() == e.WindowStateChange and self.windowState() & QtCore.Qt.WindowMinimized: # Event if I click the minimize button
self.showMinimized()
elif e.type() == e.WindowStateChange and self.windowState() == QtCore.Qt.WindowNoState: # Event if I restore the window by clicking on taskbar
self.showMaximized() # or showNormal
elif ???????: # What event I must catch if I want to minimize window by clicking on taskbar? Now it does not occur...
self.showMinimized()
return super(QWebView, self).event(e)
...
def Main(*args):
app = QApplication(args)
app.setWindowIcon(QIcon('icon.png'))
view = LauncherView()
view.setWindowTitle('*** Launcher')
frame = view.page().mainFrame()
JavaScript = JSCaller(view)
events = PyEvents(view, JavaScript)
Python = PyCaller(events)
html = HTML_data()
thisDirPath = 'file:///' + getCurrentPath() + '/Views/'
view.setHtml(html, QtCore.QUrl(thisDirPath))
frame.addToJavaScriptWindowObject('Python', Python)
frame.evaluateJavaScript("Python.Print('Python context works normally');")
view.show()
app.exec_()
if __name__ = '__main__':
Main(*sys.argv)
최소화를 명시 적으로 해제하지 않으면 특별한 작업을 수행하지 않아도됩니다. 더 자세한 내용이나 예제 코드를 제공해 주시겠습니까? –
@three_pineapples 내가 제공 할 수있는 코드 예를 알지 못합니다. 나는 메인 포스트를 업데이트했다. – Broly