我在PySide中構建了一個QWidget,並在嘗試在頁面之間共享數據時遇到問題。在Pyside/PyQt中的QWizard頁面之間共享變量
總結我利用前面頁面的用戶輸入來構建一個自定義對象列表,我需要與下一頁共享。
在我的代碼開始,我建立一個自定義的對象,一個名爲.name
(以及其他屬性)
class MyCustomClass():
def __init__(self, name, other_attributes)
self.name = name
...set other attributes
在我QWizard我打開一個文件,使名稱相匹配的列表中的屬性與另一個MyCustomClass
對象列表。然後,我會在對應的MyCustomClass
對象的匹配name
旁邊顯示名稱,並提示用戶確認(或更改),然後再轉到下一頁。
將每個匹配存儲爲tuple(name, MyCustomClass)
並添加到列表中。然後我希望從下一頁讀取此列表以執行更多操作。我正在嘗試使用.registerField
,但我不確定如何正確執行此操作。我的嘗試如下。
首先我做一個QWizardPage
,執行一些代碼,然後構造我的匹配。我做了一個函數返回值,並用這個爲.registerField
class ConfirmMatches(QWizardPage):
def __init__(self):
...
def initializePage(self):
# Code to make display and operations and make list of matches
...
self.matches = matches
self.registerField("matches", self, "get_matches")
def get_matches(self):
return self.matches
然後從我的下一個頁面,我試着打電話給外地,但我只返回一個None
對象。
class NextPage(QWizardPage):
def __init__(self):
...
def initializePage(self):
# Get relevant fields from past pages
past_matches = self.field("matches")
type(past_matches)
爲None
,即使當我print self.matches
在前一頁它清楚地顯示他們所有。
我做錯了與
registerField
什麼?有沒有一個更簡單的方法來分享這種類型的數據之間的頁面?
您是否檢查過QWizard [示例](http://qt-project.org/doc/qt-4.8/qwizard.html#details)? – Trilarion 2014-09-03 08:43:08