美文网首页
2019-02-15 问题和解决01:如何实现resize事件

2019-02-15 问题和解决01:如何实现resize事件

作者: gongdiwudu | 来源:发表于2019-02-26 11:16 被阅读0次

    我创建一个简单的UI,将其转换为Python代码。我搜索了任何检测更改窗口大小的方法。

    这是生成的代码:

    from PyQt5 import QtCore, QtGui, QtWidgets

    class Ui_MainWindow(object):

       def onResize(event):

           print(event)

       def setupUi(self, MainWindow):

           MainWindow.setObjectName("MainWindow")

           MainWindow.setWindowTitle("MainWindow")

           MainWindow.resize(200, 200)

           self.centralwidget =QtWidgets.QWidget(MainWindow)

           self.centralwidget.setObjectName("centralwidget")

           MainWindow.setCentralWidget(self.centralwidget)

           MainWindow.resized.connect(self.someFunction)

           QtCore.QMetaObject.connectSlotsByName(MainWindow)

    if __name__ == "__main__":

       importsys

       app =QtWidgets.QApplication(sys.argv)

       MainWindow = QtWidgets.QMainWindow()

       ui =Ui_MainWindow()

       ui.setupUi(MainWindow)

       MainWindow.show()

       sys.exit(app.exec_())

    我发现了一个类似的问题QWidget调整大小信号?这个教程用来处理sizethat推荐的覆盖重新调整QMainWindow的事件方法。但他们中的任何一个都无法解决我的问题。是否存在检测窗口大小调整的功能:

    回答1 默认情况下没有这样的信号,但你可以创建调整大小的信号,我们

    在resizeEventfunction中发出它。

    For Example:

    from PyQt5 import QtCore, QtGui, QtWidgets

    class Ui_MainWindow(object):

       def setupUi(self, MainWindow):

           MainWindow.setObjectName("MainWindow")

           MainWindow.setWindowTitle("MainWindow")

           MainWindow.resize(200, 200)

           self.centralwidget =QtWidgets.QWidget(MainWindow)

           self.centralwidget.setObjectName("centralwidget")

           MainWindow.setCentralWidget(self.centralwidget)

           QtCore.QMetaObject.connectSlotsByName(MainWindow)

    class Window(QtWidgets.QMainWindow):

       resized =QtCore.pyqtSignal()

       def  __init__(self, parent=None):

           super(Window, self).__init__(parent=parent)

           ui =Ui_MainWindow()

           ui.setupUi(self)

           self.resized.connect(self.someFunction)

       def resizeEvent(self, event):

           self.resized.emit()

           return super(Window, self).resizeEvent(event)

       def someFunction(self):

           print("someFunction")

    if __name__ == "__main__":

       import sys

       app = QtWidgets.QApplication(sys.argv)

       w =Window()

       w.show()

        sys.exit(app.exec_())

    回答2:

    You can override the resizeEvent by

    def resizeEvent(self, newSize):    #do code here

    回答3:

    import sys

    from PyQt5.QtWidgetsimport *

    def onResize(event):

            print(event)

    if __name__ =="__main__":

            app =  QApplication(sys.argv)

            widget =  QPushButton('Test')

            widget.resizeEvent = onResize

            widget.resize(640,480)

            widget.show()

            sys.exit(app.exec_())

    相关文章

      网友评论

          本文标题:2019-02-15 问题和解决01:如何实现resize事件

          本文链接:https://www.haomeiwen.com/subject/odtpeqtx.html