Перемещайте метку каждый раз при нажатии кнопки PyQt5 - PullRequest
1 голос
/ 29 января 2020

Я хочу переместить ряд меток влево, добавляя к их координате 100 каждый раз, когда нажимаю sh указанную кнопку c.

Я привязан к вызову функции табуляции внутри Функция move_ligne_one (), но я не могу на нее ссылаться

class App(QWidget):
    def __init__(self):
        super().__init__()
        self.title = 'Simple window'
        self.left = 100
        self.top = 100
        self.width = 1100
        self.height = 800
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)
        self.setWindowIcon(QIcon("img/icon.png"))

        def show_tab(left_cord):
            ligne_1_left_cord = left_cord
            label_ligne_1_1 = QtWidgets.QLabel(self)
            #pic_signe_x =QPixmap('img/x.png')
            #label_ligne_1_1.setPixmap(pic_signe_x)
            label_ligne_1_1.setText("X")
            label_ligne_1_1.move(ligne_1_left_cord,300)

            label_ligne_1_2 = QtWidgets.QLabel(self)
            #pic_signe_x =QPixmap('img/x.png')
            #label_ligne_1_1.setPixmap(pic_signe_x)
            label_ligne_1_2.setText("X")
            label_ligne_1_2.move( ligne_1_left_cord +200,300)


            label_ligne_1_3 = QtWidgets.QLabel(self)
            #pic_signe_x =QPixmap('img/x.png')
            #label_ligne_1_1.setPixmap(pic_signe_x)
            label_ligne_1_3.setText("X")
            label_ligne_1_3.move( ligne_1_left_cord +400,300)


            label_ligne_1_4 = QtWidgets.QLabel(self)
            #pic_signe_x =QPixmap('img/x.png')
            #label_ligne_1_1.setPixmap(pic_signe_x)
            label_ligne_1_4.setText("X")
            label_ligne_1_4.move( ligne_1_left_cord +600,300)

        buttonStart = QPushButton('START', self)
        buttonStart.setGeometry(380, 700, 250, 61)
        buttonStart.clicked.connect(self.on_click)

        button_left_1 = QPushButton('<', self)
        button_left_1.setGeometry(45,300,30,30)
        button_left_1.clicked.connect(self.move_ligne_one)


        show_tab(275)
        self.show()


    @pyqtSlot()
    def move_ligne_one(self):
        print(' button click')  

1 Ответ

3 голосов
/ 29 января 2020

Если вы хотите переместить виджет, то в первую очередь необходимо получить доступ к этому виджету, поэтому вам нужно сделать это с атрибутом класса:

# ...
<b>self.</b>label_ligne_1_1 = QtWidgets.QLabel(self)
# ...
<b>self.</b>label_ligne_1_2 = QtWidgets.QLabel(self)
# ...
<b>self.</b>label_ligne_1_3 = QtWidgets.QLabel(self)
# ...
<b>self.</b>label_ligne_1_4 = QtWidgets.QLabel(self)
# ...

А затем изменить позицию:

@pyqtSlot()
def move_ligne_one(self):
    for btn in (
        self.label_ligne_1_1,
        self.label_ligne_1_2,
        self.label_ligne_1_3,
        self.label_ligne_1_4,
    ):
        p = btn.pos()
        p += QtCore.QPoint(100, 0)
        btn.move(p)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...