Tôi là người mới bắt đầu trong PyQt. Tôi đã cố tạo một ứng dụng đơn giản để thử một số tính năng của nhiều bộ công cụ. Câu hỏi của tôi là, làm cách nào để ẩn biểu tượng ứng dụng khỏi thanh tác vụ? Tôi không muốn người dùng có thể thấy biểu tượng trên thanh tác vụ và để thu nhỏ biểu tượng bằng biểu tượng này. Có bất kỳ cờ cửa sổ nào mà tôi có thể sử dụng để đạt được điều này không?Ẩn ứng dụng PyQt khỏi thanh tác vụ
Trả lời
Phỏng theo 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_())
Tôi sẽ không khuyên bạn nên ẩn hiện diện thanh tác vụ của ứng dụng, đặc biệt nếu ứng dụng hiển thị. Nếu bạn chỉ cố gắng để ngăn chặn giảm thiểu từ thanh công cụ sau đó bạn có thể đạt được điều này bằng cách tạo phụ tùng cấp cao nhất của bạn với những lá cờ cửa sổ sau như thế này:
QWidget *mainWindow = new QWidget(0, Qt::CustomizeWindowHint
| Qt::WindowTitleHint | Qt::WindowSystemMenuHint
| Qt::WindowCloseButtonHint | Qt::WindowMaximizeButtonHint);
Nếu bạn không muốn có một lá cờ tối đa hóa, bạn có thể để lại đó là một trong danh sách.
Các cờ cửa sổ khác nhau mà Qt có thể sử dụng được ghi thành tài liệu here (Qt::WindowFlags).
này nên làm như lừa:
myApp.setWindowFlags(QtCore.Qt.Tool)
này chở tôi hạt trong nhiều ngày. Hoàn thành mã ứng dụng để triển khai bên dưới.
bit chính:
- override closeEvent(), cho phép nó để làm một trong hai chỉ ẩn cửa sổ hoặc thoát đúng
- tạo ra một số cơ sở cho người dùng chọn một trong hai ẩn hoặc hành vi lối
- không hiển thị() cửa sổ chính trên instantiation, chỉ exec_() App
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_()
Nếu bạn đang ở trên Ubuntu với Unity và muốn ẩn biểu tượng của ứng dụng khỏi trình khởi chạy ở phía bên trái, có thể bạn sẽ cần Qt.SplashScreen
. Điều này làm việc cho tôi nhưng tôi không nhớ nếu tôi cũng cần Qt.Tool
, đó là đủ trên Windows. Đối với các nỗ lực SplashScreen bạn có thể phải reimplement chức năng thay đổi kích thước vì nó vô hiệu hóa tính năng này của một QStatusBar (có một SizeGrip) ví dụ.
Here là một ví dụ nhỏ để thử cờ cửa sổ.
- 1. Ẩn nút thanh tác vụ của ứng dụng khác
- 2. Cách ẩn ứng dụng khỏi thanh tác vụ trong Windows 7?
- 3. Ẩn Thanh tác vụ trong khi hiển thị Thanh tác vụ Split
- 4. Android 3.2 xóa tiêu đề khỏi thanh tác vụ
- 5. Làm cách nào để ẩn biểu mẫu của ứng dụng trong Thanh tác vụ Windows?
- 6. ứng dụng màn hình giật gân và ẩn thanh tác vụ
- 7. Ẩn chương trình điều khiển C++ từ thanh tác vụ
- 8. Win32: toàn màn hình và ẩn thanh tác vụ
- 9. Nền nút thanh tác vụ
- 10. Thanh tác vụ Sherlock với menu trượt
- 11. Làm cách nào để tách chú thích thanh tác vụ của Ứng dụng Delphi khỏi chú thích biểu mẫu chính?
- 12. Ẩn ứng dụng khỏi danh sách ứng dụng Android
- 13. Windows Phone 7 Ẩn thanh Ứng dụng
- 14. Tab Thanh tác vụ Android
- 15. Ẩn thanh tab trong ứng dụng thanh tab
- 16. Thanh tác vụ Android tùy chỉnh
- 17. Đặt lại thanh tác vụ sau khi sử dụng SearchView
- 18. Thêm thanh tác vụ vào ListActivity
- 19. Cách ẩn các nút nếu không có phòng nào giống như trong thanh tác vụ
- 20. Android-ẩn thanh tác vụ trong khi khởi động và sau đó hiển thị lại nó?
- 21. Android Nút và thanh tác vụ Android
- 22. Xóa biểu tượng của ứng dụng đã được ghim khỏi thanh tác vụ Windows 7 trên bản nâng cấp chính của ứng dụng bằng WiX
- 23. Khi ứng dụng iOS chạy ẩn, các tác vụ kéo dài có bị tạm dừng không?
- 24. Tùy biến spinner của thanh tác vụ
- 25. robotium - nhấp vào tab thanh tác vụ
- 26. mục menu trên thanh tác vụ onclick?
- 27. Cách đặt biểu tượng thanh tác vụ của ứng dụng trong Windows 7
- 28. Biểu tượng trên thanh tác vụ bật trong biểu tượng ứng dụng trên ActionView mở rộng
- 29. cửa sổ điều khiển 7 nhóm thanh tác vụ cho ứng dụng của tôi
- 30. Android 4.0/ICS - Biểu tượng ứng dụng trên thanh tác vụ không thể bấm
thể trùng lặp của [PyQt4 Minimize to Tray] (http://stackoverflow.com/questions/758256/pyqt4-minimize-to-tray) – katrielalex
@katrielalex: Tôi nghĩ anh ấy có nghĩa là biểu tượng trên thanh tác vụ chứ không phải biểu tượng khay. – user225312
@PulpFiction: yes; cách bạn "thu nhỏ vào khay" là ẩn biểu tượng thanh tác vụ và tạo biểu tượng khay. – katrielalex