如何在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 项目时从一个片段移动到另一个片段

如何在芹菜中将任务从一个队列移动到另一个队列

如何在 TortoiseSVN 中将文件(或文件夹)从一个文件夹移动到另一个文件夹?

如何在kotlin中从一个片段转到另一个片段?