PyQt5 QSpinBox – 如何分别获得X和Y坐标

  • Post category:Python

PyQt5是Python语言的一个GUI库,可以用于创建漂亮的用户界面。QSpinBox是PyQt5的一个组件,它提供了一个数字输入框来让用户输入数字。有时我们需要获取QSpinBox组件的X和Y坐标。本文将详细讲解如何通过PyQt5获取QSpinBox组件的X和Y坐标,并提供两个示例说明。

获取QSpinBox组件的X和Y坐标

可以通过QSpinBox组件的pos属性来获取它的X和Y坐标,这个属性返回一个QPoint对象,包含了组件的左上角的坐标。

以下是获取QSpinBox组件X和Y坐标的代码方式:

spinBox = QSpinBox()
# 获取spinBox的X坐标
x = spinBox.pos().x()
# 获取spinBox的Y坐标
y = spinBox.pos().y()

示例1:QSpinBox组件X和Y坐标

下面我们演示如何获取QSpinBox组件的X和Y坐标,并将它们显示在QLabel组件中。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QSpinBox, QLabel, QVBoxLayout

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 创建一个QSpinBox组件
        spinBox = QSpinBox(self)
        # 获取spinBox的X坐标
        x = spinBox.pos().x()
        # 获取spinBox的Y坐标
        y = spinBox.pos().y()

        # 创建一个QLabel组件,显示spinBox的X和Y坐标
        label = QLabel(self)
        label.setText('QSpinBox组件的X坐标为:' + str(x) + ',Y坐标为:' + str(y))

        # 创建一个垂直布局,将spinBox和label添加到布局中
        vbox = QVBoxLayout()
        vbox.addWidget(spinBox)
        vbox.addWidget(label)

        # 将布局设置到窗口上
        self.setLayout(vbox)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('QSpinBox组件的X和Y坐标')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行程序,可以看到一个包含QSpinBox组件和QLabel组件的窗口。QLabel组件中显示了QSpinBox组件的X和Y坐标。

示例2:根据QSpinBox组件位置设置另一个组件位置

下面我们演示如何根据QSpinBox组件的位置设置另一个组件的位置。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QSpinBox, QLabel

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 创建一个QSpinBox组件
        spinBox = QSpinBox(self)
        # 获取spinBox的X和Y坐标
        x = spinBox.pos().x()
        y = spinBox.pos().y()

        # 创建一个QLabel组件,并根据spinBox组件的位置设置它的位置
        label = QLabel(self)
        label.setText('我在spinBox组件的下方')
        label.move(x, y + 50)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('根据QSpinBox组件位置设置另一个组件位置')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行程序,可以看到一个包含QSpinBox组件和QLabel组件的窗口。QLabel组件在QSpinBox组件的下方,它的位置是根据QSpinBox组件的位置设置的。