每次单击按钮时移动一个标签 PyQt5
Posted
技术标签:
【中文标题】每次单击按钮时移动一个标签 PyQt5【英文标题】:Move a label every time you click a button PyQt5 【发布时间】:2020-01-29 19:02:50 【问题描述】:我想通过每次按下特定按钮时将标签的坐标增加 100 来将标签的线向左移动。
我绑定在 move_ligne_one() 函数中调用 show tab 函数,但我无法引用它
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】:如果你想移动一个小部件,那么第一件事就是访问那个小部件,所以你必须这样做类属性:
# ...
self.label_ligne_1_1 = QtWidgets.QLabel(self)
# ...
self.label_ligne_1_2 = QtWidgets.QLabel(self)
# ...
self.label_ligne_1_3 = QtWidgets.QLabel(self)
# ...
self.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)
【讨论】:
以上是关于每次单击按钮时移动一个标签 PyQt5的主要内容,如果未能解决你的问题,请参考以下文章
每次在libgdx中单击按钮时如何向前和向后移动Sprite?