【问题标题】:Minimize PyQt5 app with a button click通过单击按钮最小化 PyQt5 应用程序
【发布时间】:2018-09-17 19:40:44
【问题描述】:

我找到了一些关于如何将 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_())

【问题讨论】:

    标签: python python-3.x pyqt pyqt5


    【解决方案1】:

    Qt Designer创建一个类,用来填充另一个widget,它不是widget,所以建议创建一个类,继承相应的widget,使用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_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多