gpt4 book ai didi

python - 在布局中移动小部件 pyqt

转载 作者:行者123 更新时间:2023-12-01 01:10:43 24 4
gpt4 key购买 nike

嗨,我的代码中有按钮,我希望当用户按下插入新按钮时,它将把所有其他按钮移动到下面一行,并在按下的按钮下方创建一个新按钮,这是我的代码

基本上,我试图在添加新按钮后将布局中的所有按钮移到下面一行:

def Insert_Stage(self) :
button = self.sender()
idx = self.Layout.indexOf(button)
location = self.Layout.getItemPosition(idx)

x=location[0]
z=self.Layout.rowCount()
print(x,z)
while(z >x+1):

items= self.Layout.itemAt(z)
# setting the item as widget
widget=items.widget()
index= self.Layout.indexOf(widget)
loc=self.Layout.getItemPosition(index)

d=loc[0]
y=loc[1]
if y!=0:
#widget.move(d+100,d)
self.Layout.addWidget(widget,(d+1),1)
else:
self.Layout.addWidget(widget,d+1,0)
z-=1

stage=QtGui.QPushButton(self)
stage.setObjectName(button.objectName())
k=(int(button.objectName()[5:])+1)
stage.setText('stage%d'%k)
self.Layout.addWidget(stage,(location[0]+1),0)

最佳答案

假设您使用的是 QVBoxLayout,您必须使用 insertWidget() 方法:

from PyQt4 import QtCore, QtGui

class Widget(QtGui.QLineEdit):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
lay = QtGui.QVBoxLayout(self)
for i in range(5):
btn = QtGui.QPushButton(
'button {}'.format(i),
clicked=self.on_clicked
)
lay.addWidget(btn)

@QtCore.pyqtSlot()
def on_clicked(self):
btn = self.sender()
ix = self.layout().indexOf(btn)
new_btn = QtGui.QPushButton(
"button {}".format(self.layout().count()),
clicked=self.on_clicked
)
self.layout().insertWidget(ix+1, new_btn)

if __name__ == '__main__':
import sys

app = QtGui.QApplication.instance()
if app is None:
app = QtGui.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())

关于python - 在布局中移动小部件 pyqt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54889080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com