मैं पीईक्यूटी में एक नौसिखिया हूं। मैं टूलकिट की कई विशेषताओं को आजमाने के लिए एक सरल ऐप बनाने की कोशिश कर रहा था। मेरा सवाल है, मैं टास्कबार से ऐप आइकन कैसे छिपा सकता हूं? मैं नहीं चाहता कि उपयोगकर्ता टास्कबार में आइकन देख सके और इस आइकन का उपयोग करके इसे कम कर सके। क्या कोई खिड़की झंडे है जिसका उपयोग मैं इसे प्राप्त करने के लिए कर सकता हूं?टास्कबार से पीईक्यूटी ऐप छुपाएं
उत्तर
this thread से अनुकूलित:
import sys
from PyQt4.QtGui import *
if __name__ == '__main__':
app = QApplication(sys.argv)
widget = QWidget()
mainWindow = QMainWindow(widget)
mainWindow.show()
sys.exit(app.exec_())
मैं किसी एप्लिकेशन की टास्कबार उपस्थिति को छिपाने की कोशिश करने की अनुशंसा नहीं करता, खासकर अगर एप्लिकेशन दिखाई दे रहा है।
QWidget *mainWindow = new QWidget(0, Qt::CustomizeWindowHint
| Qt::WindowTitleHint | Qt::WindowSystemMenuHint
| Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint);
आप बढ़ाना 'झंडा नहीं करना चाहते हैं, तो आप छोड़ सकते हैं: यदि आप केवल टास्कबार से कम से कम रोकने का प्रयास कर रहे हैं तो आप इस तरह निम्नलिखित खिड़की झंडे के साथ अपने शीर्ष स्तर विजेट बनाने के द्वारा इस लक्ष्य को हासिल कर सकते हैं वह सूची में से एक भी है।
क्यूटी का उपयोग कर सकते हैं कि विभिन्न खिड़की झंडे here (Qt::WindowFlags) दस्तावेज हैं।
इस चाल करना चाहिए:
myApp.setWindowFlags(QtCore.Qt.Tool)
यह दिनों के लिए मुझे पागल कर दिया। नीचे लागू करने के लिए पूरा ऐप कोड।
कुंजी बिट्स:
- ओवरराइड closeEvent(), यह सक्षम करने चुनें या तो छुपाने या बाहर निकलने के व्यवहार
- को सिर्फ खिड़की या सच बाहर निकलने
- उपयोगकर्ता के लिए कुछ सुविधा बनाने छुपाने का या तो ऐसा करने के लिए तत्काल पर मुख्य विंडो नहीं दिखाएं, केवल exec_() ऐप
import sys from PyQt4.QtGui import QAction, QApplication, QFrame, QIcon, \ QMainWindow, QMenu, QSystemTrayIcon from PyQt4.QtCore import SIGNAL class MyApp(QMainWindow): def __init__(self, parent, title): super(QMainWindow, self).__init__(parent) self.exitOnClose = False exit = QAction(QIcon(), "Exit", self) self.connect(exit, SIGNAL("triggered()"), self.exitEvent) self.trayIcon = QSystemTrayIcon(QIcon(), self) menu = QMenu(self) menu.addAction(exit) self.trayIcon.setContextMenu(menu) self.connect(self.trayIcon, \ SIGNAL("activated(QSystemTrayIcon::ActivationReason)"), \ self.trayIconActivated) self.trayIcon.show() self.trayIcon.showMessage("MyApp is running!", "Click to open window\nRight click for menu") def trayIconActivated(self, reason): if reason == QSystemTrayIcon.Context: self.trayIcon.contextMenu().show() elif reason == QSystemTrayIcon.Trigger: self.show() self.raise_() def closeEvent(self, event): if self.exitOnClose: self.trayIcon.hide() del self.trayIcon event.accept() else: self.hide() event.setAccepted(True) event.ignore() def exitEvent(self): self.exitOnClose = True self.close() if __name__ == "__main__": app = QApplication(sys.argv) myapp = MyApp(None, "My System Tray App") app.exec_()
आप एकता साथ Ubuntu पर कर रहे हैं और बाएँ हाथ की ओर पर लॉन्चर से किसी एप्लिकेशन का आइकन छुपाना चाहते हैं, तो आप शायद Qt.SplashScreen
की आवश्यकता होगी। यह मेरे लिए काम करता है लेकिन मुझे याद नहीं है कि मुझे Qt.Tool
की आवश्यकता है, जो कि विंडोज पर पर्याप्त है। स्प्लैशस्क्रीन प्रयास के लिए आपको आकार बदलने की कार्यक्षमता को फिर से कार्यान्वित करना पड़ सकता है क्योंकि यह उदाहरण के लिए QStatusBar (जिसमें एक SizeGrip है) की इस सुविधा को अक्षम करता है।
Here विंडो झंडे को आजमाने के लिए एक छोटा सा उदाहरण है।
के संभावित डुप्लिकेट [PyQt4 ट्रे में छोटा] (http://stackoverflow.com/questions/758256/pyqt4-minimize-to-tray) – katrielalex
@katrielalex: मुझे लगता है उसका मतलब टास्कबार आइकन है और ट्रे आइकन नहीं। – user225312
@PulpFiction: हाँ; जिस तरह से आप "ट्रे को कम करें" टास्कबार आइकन को छिपाना और ट्रे आइकन बनाना है। – katrielalex