मेरा सामान्य उत्तर यह नहीं होगा, यह सीधे-सीधे फैशन में संभव नहीं है। मुख्य मुद्दा यह है कि जब आप अपना ऐप शुरू करते हैं, तो यह सबकुछ स्मृति में लोड करता है, और आपकी कक्षाओं में उनके तरीके बाध्य होते हैं, आदि ... तो कहने के लिए, कक्षाओं की विधि के बदले मूल्य, आपको करना होगा उस वर्ग (या विजेट) को नष्ट करें और इसे अद्यतन स्रोत के तहत पुन: बनाएं (जो बच्चों को भी मार देगा)।
इसका बुरा लग रही है, लेकिन यह कुछ इस तरह दिखेगा:
## main.py ##
class MainWindow(QtGui.QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.resize(640,480)
self.central = widget.Widget()
self.setCentralWidget(self.central)
self.toolbar = QtGui.QToolBar()
self.toolbar.addAction("Reload Entire Widget", self._reloadWidget)
self.addToolBar(QtCore.Qt.TopToolBarArea, self.toolbar)
def _reloadWidget(self):
print "Reloading", widget
reload(widget)
self.central.deleteLater()
self.central = widget.Widget()
self.setCentralWidget(self.central)
## widget.py ##
class Widget(QtGui.QWidget):
def __init__(self, *args, **kwargs):
super(Widget, self).__init__(*args, **kwargs)
self.layout = QtGui.QVBoxLayout(self)
self.button = QtGui.QPushButton("Click")
self.layout.addWidget(self.button)
self.button.clicked.connect(self.testMethod)
def testMethod(self):
print "testmethod(): FOO"
फिर से, मुझे लगता है कि इस दृष्टिकोण समस्याग्रस्त और साथ के बाद से आप को नष्ट करने और अपने विजेट से बनाना निपटने के लिए मुश्किल है। अधिक समस्या तब होती है जब आपके ऐप के कुछ हिस्सों में इस विजेट के स्लॉट्स को अपडेट किया जा रहा संकेत मिलता है। फिर आपको अपने मॉड्यूल को फिर से लोड करना होगा और उनके संकेतों को फिर से जोड़ना होगा। यह एक बड़ी निर्भरता पेड़ की स्थिति बन जाता है। मानक पायथन लिपि के साथ काफी मुश्किल है, अकेले इसे पीईक्यूटी फ्रेमवर्क की तरह कुछ और लगातार और गतिशील के साथ करने की कोशिश करें।
असल में, इस क्षमता पर भरोसा न करें। अपने दोहराव वाले कार्यों को अनुकरण करने के लिए आप setting up something with QTest से बेहतर हो सकते हैं।
अच्छा सवाल। मैंने कुछ ऐसा ही पूछा, हालांकि अधिक सामान्य: http://stackoverflow.com/questions/9519384/editing-programs-while-they-are-running-how। – gdw2
कुछ समय पहले मैंने ['reimport'] (http://code.google.com/p/reimport/) मॉड्यूल का उपयोग करने की कोशिश की है जिसमें PySide http://pastebin.com/VN0JPDfC के लिए कुछ वर्कअराउंड लिख रहे हैं (PyQt चाहिए काम भी)। यह काम करता है, लेकिन कभी-कभी यह अप्रत्याशित अपवाद उठाता है। मैं @jdi से सहमत हूं, परीक्षण बेहतर तरीका है। – reclosedev