如何在pyqt5中将按钮移动到另一个框架?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在pyqt5中将按钮移动到另一个框架?相关的知识,希望对你有一定的参考价值。
有两个框架包含按钮。
何时单击左框中的按钮,单击按钮移动到右框。
如何将按钮移动到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?
答案
小部件的位置是相对于父级的,这很清楚,因为按钮的父级为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_())
以上是关于如何在pyqt5中将按钮移动到另一个框架?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Android 中单击 ImageView 时从一个片段移动到另一个片段?
如何在单击 RecyclerView 项目时从一个片段移动到另一个片段