gpt4 book ai didi

python - 访问 Qt Designer 中添加的小部件

转载 作者:行者123 更新时间:2023-12-01 04:03:04 25 4
gpt4 key购买 nike

我正在使用 Qt Designer 创建 Qt GUI。在设计器中,我将两个小部件放置在 QSplitter 中(一个小部件位于左侧,另一个小部件位于右侧)。

问题是,现在我想单独控制每个小部件,但我的主窗口具有其中所有内容的 GUI python 代码,包括两个小部件及其内容(标签、文本标签等)。

有没有办法单独访问小部件?这是我的代码:

在主窗口上:

if __name__ == "__main__":

import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = mw_gui.Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()

img_widget = ImageWidget(MainWindow)

sys.exit(app.exec_())

在我想用来控制右侧小部件的类中:

class ImageWidget(QtGui.QWidget):
def __init__(self, parent, variables):
# self.ui = ui
# self.variables = variables
if not isinstance(parent, QtGui.QMainWindow):
raise TypeError('parent must be a QMainWindow')
super(ImageWidget, self).__init__()

self._parentWidget = parent

我想访问 self.imglabel,它位于右侧小部件内,但似乎找不到它。

最佳答案

您应该为主窗口创建一个子类,继承自QMainWindowUi_MainWindow。通过这种方法,Qt Designer 中添加的所有小部件都可以作为实例属性进行访问:

from PySide import QtGui
from mw_gui import Ui_MainWindow

class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setupUi(self)
self.imglabel.setPixmap(QtGui.QPixmap('image.png'))

if __name__ == "__main__":

import sys
app = QtGui.QApplication(sys.argv)
mainwindow = MainWindow()
mainwindow.show()
sys.exit(app.exec_())

以这种方式执行操作还意味着可能不需要单独的 Controller 类,因为您只需向 MainWindow 类添加方法即可。如果所有内容都在一个命名空间中,那么设计会简单得多。

关于python - 访问 Qt Designer 中添加的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36178683/

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