簡體   English   中英

如何將按鈕移到pyqt5中的另一幀?

[英]how to move button to another frame in 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作為其父self.left_frame並且它們的位置是相對於它的。 如果您希望它移動到另一個QFrame ,則只需使用setParent()將另一個父級設置為另一個QFrame ,並通過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_())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM