Как заставить кнопку перемещаться при изменении размера окна?(PyQt4) - PullRequest
0 голосов
/ 26 апреля 2018

Я знаю, что вторая строка, которую я прокомментировал, не работает, просто представление того, о чем я думал.Это будет работать все время, пока программа работает, поэтому она может адаптироваться к изменениям размера.

Возможно ли что-то подобное?

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 голосов
/ 26 апреля 2018

Предполагая, что вам нужно, чтобы кнопка всегда оставалась в середине окна, вы могли бы сделать это, переписав метод 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()
...