gpt4 book ai didi

python - 在运行时替换小部件

转载 作者:行者123 更新时间:2023-12-02 10:44:27 25 4
gpt4 key购买 nike

情况是这样的。我有一个派生自 QListView 的类,它添加了一些方便的功能,如果您愿意的话,还可以是自定义小部件。我不想与设计师争论如何使用我的小部件。我只是想在设计器中使用普通的 QlistView(作为占位符)并使用 pyuic4 进行编译。在运行时,我想用我自己的版本替换正常的 QListView。

你怎么能做到这一点?

我希望 init 中类似的东西能够解决问题:

self.lstView1 = MyListView

但事实并非如此...

最佳答案

问题是您实际上只是替换了 lstView1 指向的对象,但没有将其添加到小部件中。也就是说,当您创建对象时,您只需告诉 python 使用 lstView1 指向您的新对象,但实际的 UI 使用旧指针,因为它已经添加了。

我假设您已使用 py4uci 将 ui 文件转换为 python,并将 gui 设置为:

class ExambleUI(QtGUi.QDialog, UI_Example):
def __init__(self, parent):
QtGui.QDiialog.__init__(self, parent)
self.setupUI(self)
self.lstView1 = MyListView

因为 setupUi 在您更改 lstView 的值之前执行,所以您不会获得新的小部件。您只需交换线路即可:

class ExambleUI(QtGUi.QDialog, UI_Example):
def __init__(self, parent):
QtGui.QDiialog.__init__(self, parent)
self.lstView1 = MyListView
self.setupUI(self)

另一方面,我建议您遵循此tutorial并在设计器中创建和使用您的小部件,既简单又快捷。

关于python - 在运行时替换小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1388707/

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