में सेंट्रलविजेट को बदलें मैं पाइसाइड के लिए नया हूं। मेरे पास एक मुख्य विंडो ऑब्जेक्ट है जो एक समय में एक विजेट दिखाता है। बटन दबाते समय विंडो में दृश्यमान विजेट को प्रतिस्थापित करने के लिए मैं QMainWindow
कक्षा के केंद्रीय विजेट को बदलने की कोशिश कर रहा हूं। समस्या यह है कि दबाया गया बटन विजेट क्लास में है, मुख्य विंडो वर्ग में नहीं।मेनविंडो
कहते हैं ...
class App(QtGui.QMainWindow):
def __init__(self):
super(App, self).__init__()
self.initUI()
def initUI(self):
self.statusBar().showMessage('Listo.') #Status Bar
self.login_screen = LoginScreen()
self.logged_in_screen = LoggedInScreen()
self.setCentralWidget(self.login_screen)
self.setGeometry(300, 300, 450, 600) #Window Size
self.setWindowTitle('PyTransactio - Client') #Window Title
self.setWindowIcon(QtGui.QIcon('icon.png')) #App Icon
self.show()
दबाया बटन login_screen
उदाहरण में है। विधि बटन क्लिक होने बुलाया LoginScreen
वर्ग के भीतर है:
def login(self):
""" Send login data to the server in order to log in """
#Process
self.setParent(None)
None
को माता-पिता विजेट की स्थापना मुख्य विंडो से विजेट (login_screen
) को हटा। loginButton
(login_screen
विजेट के अंदर) जब कोई अन्य विजेट (उदाहरण के लिए logged_in_screen
) मुख्य विंडो के केंद्रीय विजेट के रूप में मुझे क्या करना चाहिए?
शायद लॉगिन विधि मुख्य विंडो कक्षा के अंदर होनी चाहिए? यदि हां, तो मैं मुख्य विंडो की विधि के साथ login_screen
में दबाए गए बटन को कैसे कनेक्ट कर सकता हूं?
** QStackedWidget ** काम किया। इसके अलावा, मैंने कभी भी 'self.parent() लॉगिन' के बारे में सोचा नहीं। मुझे लगता है कि मुझे अपने ओओपी पर काम करना होगा। आपका बहुत बहुत धन्यवाद! –
केंद्रीय विजेट के रूप में सेटिंग करते समय, QMainWindow उस विजेट का स्वामित्व लेता है। केंद्रीय विजेट के रूप में अन्य विजेट को सेट करते समय, पहला नष्ट हो जाता है, जो खराब है। –
@HrvojeT हां, यही कारण है कि मेरा उत्तर 'QStackedWidget' का उपयोग करता है और वह हैक नहीं, जिसे शायद कुछ बदसूरत कोड ठीक से काम करने की आवश्यकता होती है। – Bakuriu