有两个框架包含按钮。
何时单击左框中的按钮,单击按钮移动到右框。
如何在pyqt中将按钮移动到另一帧?
def create_widget(self):
left_frame = QFrame(self)
left_frame.setFixedWidth(300)
left_frame.setFixedHeight(400)
left_frame.move(0, 0)
for x in range(10):
btn = QPushButton('button', left_frame)
btn.setFixedWidth(50)
btn.setFixedHeight(20)
btn.move(5, 0+(30*x))
btn.clicked.connect(self.click_btn_add)
right_frame = QFrame(self)
right_frame.setFixedWidth(300)
right_frame.setFixedHeight(400)
right_frame.move(400, 0)
def click_btn_add(self):
# How to move button to another frame?
答案 0 :(得分:0)
小部件的位置是相对于父级的,这是明确的,因为按钮的父级为self.left_frame
,并且它们的位置相对于它。如果您希望它移动到另一个QFrame
,则只需将另一个父级设置为另一个QFrame
setParent()
并使其show()
可见(更改父级时)小部件是隐藏的)。要获得插槽中的按钮,我们将使用sender()
返回发出信号的对象,在这种情况下,它是按钮。在下面我将按下按钮,它将移动到另一个QFrame
:
import sys
from PyQt5.QtWidgets import *
class Widget(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.create_widget()
def create_widget(self):
self.left_frame = QFrame(self)
self.left_frame.setFixedSize(300, 400)
self.left_frame.move(0, 0)
self.right_frame = QFrame(self)
self.right_frame.setFixedSize(300, 400)
self.right_frame.move(400, 0)
for x in range(10):
btn = QPushButton('button', self.left_frame)
btn.setFixedSize(50, 20)
btn.move(5, 30*x)
btn.clicked.connect(self.click_btn_add)
def click_btn_add(self):
btn = self.sender()
new_parent = self.right_frame if btn.parent() == self.left_frame else self.left_frame
btn.setParent(new_parent)
btn.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())