मैं एक कॉन्फ़िगरेशन फ़ाइल बनाने की कोशिश कर रहा हूं जिसमें बंद होने पर विंडो आकार, स्थिति और स्थिति के बारे में जानकारी होगी। फिर से खोलते समय इसे उस जानकारी के आधार पर पुनर्प्राप्त करना चाहिए। इसलिए मैं इस फ़ंक्शन को ट्रिगर करने के लिए closeEvent
का उपयोग कर रहा हूं:
cfg = ConfigParser() # create config object
def saveConfig(gui):
winW = gui.centralwidget.frameGeometry().width() # width of window
winH = gui.centralwidget.frameGeometry().height() # height of window
cfg['window'] = {} # window settings
window = cfg['window']
window['size'] = f"{winW},{winH}" # save current window size
window['pos'] = f"{gui.x()},{gui.y()}" # save current window position
with open(CONFIG_PATH, 'w') as file: # write config to file
cfg.write(file)
लोडकॉन्फिग फ़ंक्शन यहां दिया गया है:
def loadConfig(gui):
cfg.read(CONFIG_PATH) # read config from CONFIG_PATH
if 'window' in cfg: # window settings
window = cfg['window']
size = window.get('size').split(',')
pos = window.get('pos').split(',')
gui.resize(int(size[0]), int(size[1])) # resize window to saved size
gui.move(int(pos[0]), int(pos[1])) # move window to save position
else:
gui.resize(1110,783)
gui.move(398,94)
हालाँकि, यदि विंडो अधिकतम होने के दौरान बंद है, तो यह लॉन्च के बाद फिर से अधिकतम नहीं दिखाई देती है। बस उसी आकार और स्थिति में।
मैंने पढ़ा है कि आप विंडोस्टेट() प्राप्त कर सकते हैं। फिर इसकी तुलना करना आसान होगा यदि यह Qt.WindowMaximized
है लेकिन जब मैं print(gui.centralwidget.windowState()
का उपयोग करता हूं तो यह <PyQt5.QtCore.Qt.WindowStates object at 0x000001E7B1DBF970>
देता है। कोई विचार?
1 उत्तर
सभी क्यूटी एनम और झंडे पूर्णांक या बिटवाइज मान हैं, इसलिए उन्हें आसानी से "पठनीय" प्रारूप में परिवर्तित किया जा सकता है:
state = int(self.windowState())
बिटवाइज़ ऑपरेटरों का उपयोग करके, संख्यात्मक मान को जाने बिना भी झंडे की सीधे तुलना की जा सकती है:
isMaximized = self.windowState() & QtCore.Qt.WindowMaximized
ध्यान दें कि यदि आप किसी विशिष्ट स्थिति को जानना चाहते हैं तो आप केवल संबंधित सुविधा कार्यों को कॉल कर सकते हैं: isMaximized()
, isMinimized()
और isFullScreen()
.
अंत में, याद रखें कि Qt पहले से ही saveGeometry()
और < a href="https://doc.qt.io/qt-5/qwidget.html#restoreGeometry" rel="nofollow noreferrer">restoreGeometry()
, जो न केवल विंडो की ज्योमेट्री को स्टोर करता है , लेकिन स्क्रीन नंबर और ज्यामिति भी जिस पर विजेट वर्तमान में है, जो यह सुनिश्चित करता है कि विंडो को यथासंभव पुनर्स्थापित किया जाएगा, जबकि यह सुनिश्चित करते हुए कि यह हमेशा दिखाई दे, भले ही स्क्रीन सेटअप बदल गया हो .
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
saveGeometry()
का उपयोग न करने का कोई विशेष कारण है औरrestoreGeometry()
?resize()
औरmove()
पर अलग-अलग कॉल का उपयोग करने के बजाय, आमतौर पर इसके बजाय सीधेsetGeometry()
का उपयोग करना बेहतर होता है