来自另一个类的PySide编辑小部件

2024-06-24 12:40:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写的程序有问题。由于它将相当大,我想将布局和信号等分离成单独的类/模块,以便更容易阅读。我希望能够编辑来自另一个类的布局小部件。这是可能的,还是我想做一些不可能的事?我在下面加了一个例子,以防我的解释不清楚

class Layout:
  def __init__(self):
    self.callback = CallBack()

  def Gui(self):
    ''' 
    some layout with a listwidget that affects another listwidget depending on choice for example
    '''
    self.list1 = QtGui.QListWidget()
    self.list1.addItems(['chocolate', 'candy', 'pop'])

    self.list1.itemClicked.connect(self.callback.ButtonCallback)

    self.list2 = QtGui.QListWidget()

class CallBack(Layout):
  def __init__(self)
    super(CallBack, self).__init__()

  def ButtonCallback(self, button_signal):
    '''
    do get options for self.list2 depending on chosen item
    '''

    new_items = ['item1', 'item2', 'item3']
    Layout.list2.addItems(new_items)

我意识到代码的最后一行可能是错误的,但这正是我正在努力解决的部分。在

非常感谢你的帮助。在


Tags: selfforinitondefcallback布局class
1条回答
网友
1楼 · 发布于 2024-06-24 12:40:52

你当然可以让其他对象响应你的信号,只要它们符合QObject。在您编写的示例代码中,我将创建回调对象作为QObject的子类,并保留与拥有它的布局的关系,以便它可以访问布局对象的属性。在

class Layout:
    def __init__(self):
        self.callback = CallBack(self)

    def Gui(self):
    ''' 
    some layout with a listwidget that affects another listwidget depending on choice for example
    '''
    self.list1 = QtGui.QListWidget()
    self.list1.addItems(['chocolate', 'candy', 'pop'])

    self.list1.itemClicked.connect(self.callback.ButtonCallback)

    self.list2 = QtGui.QListWidget()

class CallBack(QtCore.QObject):
    def __init__(self, parent)
        super(CallBack, self).__init__()
        self.parent = parent

    def ButtonCallback(self, button_signal):
    '''
    do get options for self.parent.list2 depending on chosen item
    '''

    new_items = ['item1', 'item2', 'item3']
    self.parent.list2.addItems(new_items)

相关问题 更多 >