处理弹出窗口选项的正确方法 window
Proper way to deal with options in a pop up window
我在列表中有一些项目减少了一个内部值,当这个值是 0 时,一个 windows 弹出并询问要做什么,有 3 个选项,将项目设置为 'completed',设置项目为'missed',设置项目为'delayed'。
window 是一个 QDockWidget,通过 QPushButtons 选择选项,我想将它们连接到一个函数,该函数将处理 3 个可能的操作中的每一个。
喜欢
self.options_button_completed.clicked.connect(self.set_completed)
self.options_button_missed.clicked.connect(self.set_missed)
self.options_button_delayed.clicked.connect(self.set_delayed)
但我不能这样做,因为我需要引用首先引发 window 的项目
我想知道是否可以通过一种方式设置点击插槽,它也会传递一个额外的参数,即引发 QDockWidget 的项目。
可能吗?否则,处理此问题的正确方法是什么?
我假设我需要为项目保留一个变量,但我正在寻找一种更干净的方法,而不用变量堵塞 class。
通过使 Window 成为一个单独的 QWidget,我可以在主 window 中实例化它并传递额外的参数(项目),这将是一个实例属性。
class MainFrame(QWidget):
def __init__(self):
self.popup_windows = [] # to store the pops
def display_popup_window(self, item):
# item is the reference item that it's internal value reached 0
popup_window = PopupFrame(self, item)
popup_window.show()
popup_window._raise()
self.popup_windows.append(popup_window)
class PopupFrame(QWidget):
def __init__(self, parent, item):
self.parent = parent
self.item = item
# set up other things, like buttons, layout...
self.options_button_completed.clicked.connect(self.set_completed)
self.options_button_missed.clicked.connect(self.set_missed)
self.options_button_delayed.clicked.connect(self.set_delayed)
def set_completed(self):
# do something with self.item
pass
它被简化只是为了传达一般想法,如果有人需要一个工作示例,请随时在评论中提问,我会提供。
我在列表中有一些项目减少了一个内部值,当这个值是 0 时,一个 windows 弹出并询问要做什么,有 3 个选项,将项目设置为 'completed',设置项目为'missed',设置项目为'delayed'。
window 是一个 QDockWidget,通过 QPushButtons 选择选项,我想将它们连接到一个函数,该函数将处理 3 个可能的操作中的每一个。
喜欢
self.options_button_completed.clicked.connect(self.set_completed)
self.options_button_missed.clicked.connect(self.set_missed)
self.options_button_delayed.clicked.connect(self.set_delayed)
但我不能这样做,因为我需要引用首先引发 window 的项目
我想知道是否可以通过一种方式设置点击插槽,它也会传递一个额外的参数,即引发 QDockWidget 的项目。
可能吗?否则,处理此问题的正确方法是什么?
我假设我需要为项目保留一个变量,但我正在寻找一种更干净的方法,而不用变量堵塞 class。
通过使 Window 成为一个单独的 QWidget,我可以在主 window 中实例化它并传递额外的参数(项目),这将是一个实例属性。
class MainFrame(QWidget):
def __init__(self):
self.popup_windows = [] # to store the pops
def display_popup_window(self, item):
# item is the reference item that it's internal value reached 0
popup_window = PopupFrame(self, item)
popup_window.show()
popup_window._raise()
self.popup_windows.append(popup_window)
class PopupFrame(QWidget):
def __init__(self, parent, item):
self.parent = parent
self.item = item
# set up other things, like buttons, layout...
self.options_button_completed.clicked.connect(self.set_completed)
self.options_button_missed.clicked.connect(self.set_missed)
self.options_button_delayed.clicked.connect(self.set_delayed)
def set_completed(self):
# do something with self.item
pass
它被简化只是为了传达一般想法,如果有人需要一个工作示例,请随时在评论中提问,我会提供。