0

我正在为图形用户界面使用 Python3 和 QtDesigner 开发桌面软件。

我的问题是:我正在尝试在 QFrame 上自动创建许多 QRadioButtons(RadioButtons 必须留在框架内 [as...children?])。

现在,我看到我只能在 Layout 中创建新的小部件(例如“MyLayout.addWidget(QRadioButton”)),并且无法执行“MyFrame.addWidget(QRadioButton)”之类的操作。我需要框架内的这些小部件,因为然后我可以使用“MyRB.move(X,Y)”将它们放置在正确的位置。

使用 QtDesigner 可以将许多小部件(如 RadioButtons)放置在具有“破坏布局”的框架中,因此我可以选择 X、Y 坐标,但我需要创建并放置可变数量的这些小部件。

是否可以在 QFrame 中创建 Qwidget?

4

2 回答 2

0

尝试

def myFunction(self):

    LB1 = self.sender()
    LB1.QLabel('MyLabel')
    LB1.setObjectName('LABEL_1')
    LB1.setParent(self.myFrame)

您可以在 parent 中调用 self.myFunction() 。

如果你想传递标签,你可以:

def myFunction(self, label):

    LB1 = self.sender()
    LB1.QLabel(label)
    LB1.setObjectName(label)
    LB1.setParent(self.myFrame)
于 2021-09-28T01:20:28.977 回答
0

[编辑] 根据musicamante 的评论,我知道这是一个家长问题。我试图在主窗口中插入一个标签和一个 RadioButton:

def __init__(self):
     super().__init__()
     uic.loadUi('DSS_GUI2.ui',self) # i load the GUI with QtDesigner
     LB1 = QLabel('MyLabel',self)
     RB1 = QRadioButton('MyRadioButton',self)
     ...

这个非常简单的示例工作正常,但是当我尝试通过函数添加标签时

def myFunction(self):
    LB1 = QLabel('MyLabel')
    LB1.setObjectName('LABEL_1')
    LB1.setParent(self.myFrame)

Widget 已插入但不可见,实际上添加此行以检查他的存在

    WidgetList = self.myFrame.findChildren(QLabel)
    
    for item in WidgetList:
        print(item.objectName())

我在控制台中看到标签在那里。你知道为什么它不可见吗?

于 2020-10-22T17:42:09.140 回答