You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyQt5无边框窗口点击按钮调用showMinimized()无效求助

PyQt5无边框窗口最小化按钮无效问题解决

你的问题核心在于mini()函数的逻辑错误:你在函数里新建了一个全新的QMainWindow实例并调用它的最小化方法,但这个新窗口从未被显示过,和你主入口里真正展示的窗口完全是两个独立对象,所以点击按钮后没有任何效果。

修复方案一:在Ui类中保存主窗口引用

修改你的代码,在setupUi方法里把传入的主窗口对象保存为Ui类的属性,之后直接调用这个属性的最小化方法:

from PyQt5 import QtCore, QtGui, QtWidgets
import win32com.client as win32

class Ui_MainWindow(object):
# more code before
    def setupUi(self, MainWindow):
        self.main_window = MainWindow  # 保存主窗口引用
        self.pushButton_3 = QtWidgets.QPushButton(self.widget_7, clicked=self.mini)
        self.pushButton_3.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
        self.pushButton_3.setText("")
# more code after

    def mini(self):
        self.main_window.showMinimized()  # 调用实际主窗口的最小化方法

if __name__ == '__main__':  # 修正语法错误:下划线和空格
    import sys
    import salvataggioicone_rc
    app = QtWidgets.QApplication(sys.argv)
    ex = Ui_MainWindow()
    w = QtWidgets.QMainWindow()
    ex.setupUi(w)
    statusbar = w.statusBar()
    w.show()
    sys.exit(app.exec_())

修复方案二:通过控件查找主窗口

如果不想保存主窗口引用,可以通过按钮控件的window()方法直接获取它所属的主窗口:

def mini(self):
    main_window = self.pushButton_3.window()
    main_window.showMinimized()

另外注意主入口的条件判断语句有语法错误,原代码的if "__ name__" == '__ main __':需要修正为if __name__ == '__main__':,否则可能导致代码无法正确执行。

内容的提问来源于stack exchange,提问作者Edward Gavril

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:42:13