如何在调整窗口大小时使按钮移动? (PyQt4中)

时间:2018-04-26 00:59:10

标签: python pyqt pyqt4 qwidget

我知道我评论的第二行并不起作用,只是表达了我的想法。这将在程序的整个时间运行,因此可以根据大小的变化进行调整。

这样的事情可能吗?

import sys    
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):
    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle("SciCalc")
        self.setWindowIcon(QtGui.QIcon('atom.png'))
        # self.setFixedSize(1000,800)
        self.home()

    def home(self):
        btn = QtGui.QPushButton("Physics", self)
        btn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        btn.resize(100, 100)
        btn.resize(100, 100)
        # btn.move(width/2,height/2)
        self.show()


def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())


run()

1 个答案:

答案 0 :(得分:2)

假设您想要的是按钮始终位于窗口中间,您可以通过覆盖resizeEvent方法来实现。

import sys    
from PyQt4 import QtGui, QtCore

class Window(QtGui.QMainWindow):
    def __init__(self):
        super(Window, self).__init__()
        self.setGeometry(50, 50, 500, 300)
        self.setWindowTitle("SciCalc")
        self.setWindowIcon(QtGui.QIcon('atom.png'))
        self.home()

    def home(self):
        self.btn = QtGui.QPushButton("Physics", self)
        self.btn.clicked.connect(QtCore.QCoreApplication.instance().quit)
        self.btn.resize(100, 100)
        self.show()

    def resizeEvent(self, event):
        self.btn.move(self.rect().center()-self.btn.rect().center())
        QtGui.QMainWindow.resizeEvent(self, event)


def run():
    app = QtGui.QApplication(sys.argv)
    GUI = Window()
    sys.exit(app.exec_())


run()