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
相关产品推荐
相关产品推荐

