[英]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.