簡體   English   中英

單擊按鈕最小化PyQt5應用

[英]Minimize PyQt5 app with a button click

我找到了一些有關如何將pyqt小部件最小化到系統托盤的材料,但是我沒有找到需要的東西。

我想最小化按鈕單擊時的小部件,我不想覆蓋默認的關閉按鈕,當用戶單擊窗口邊框關閉時,它仍將關閉,但是當單擊我的按鈕時,它將最小化到系統托盤。

這是有可能的,因為所有示例都嘗試覆蓋默認事件。 我要附加的這段代碼是在qtDesigner中創建的,它只包含一個按鈕,有點像操場,我希望有人可以幫助,干杯。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QSystemTrayIcon
class Ui_Form(object):
    def setupUi(self, Form):


        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.btn_name = QtWidgets.QPushButton(Form)
        self.btn_name.setGeometry(QtCore.QRect(300, 30, 98, 33))
        self.btn_name.setObjectName("btn_name")
        self.btn_name.clicked.connect(self.minimize)
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.btn_name.setText(_translate("Form", "PushButton"))

    def minimize(self):
        print("Test")  




if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QWidget()
    ui = Ui_Form()
    ui.setupUi(Form)
    Form.show()
    sys.exit(app.exec_())

Qt Designer創建了一個用於填充另一個窗口小部件的類,它不是窗口小部件,因此建議創建一個從適當的窗口小部件繼承並使用Ui_Form類進行填充的類。 有關更多信息,請閱讀以下內容:

至此,您必須使用showMinimized()方法。

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'untitled.ui'
#
# Created by: PyQt5 UI code generator 5.10.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(400, 300)
        self.btn_name = QtWidgets.QPushButton(Form)
        self.btn_name.setGeometry(QtCore.QRect(300, 30, 98, 33))
        self.btn_name.setObjectName("btn_name")        
        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.btn_name.setText(_translate("Form", "PushButton"))

class Form(QtWidgets.QWidget, Ui_Form):
    def __init__(self, *args, **kwargs):
        QtWidgets.QWidget.__init__(self, *args, **kwargs)
        self.setupUi(self)
        self.btn_name.clicked.connect(self.minimize)

    def minimize(self):
        self.showMinimized()

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    w = Form()
    w.show()
    sys.exit(app.exec_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM