2015-06-09 4 views
5

मुझे यह समस्या कई बार रही है।एक QWidget रीफ्रेशिंग

जब मैं widget.show() के बाद QWidget के कुछ गुणों को संशोधित करता हूं, तो विजेट अपडेट नहीं होगा। अधिकांश समय, माउस क्लिक करता है या जब माउस विजेट छोड़ देता है या प्रवेश करता है, तो विजेट अपडेट हो जाएगा। हालांकि, अगर मैं माउस छोड़ देता हूं, तो यह स्वयं ही ताज़ा नहीं होगा।

अब तक मैं ऐसा करने से इस समस्या से निपटने में कामयाब रहे:

widget.hide() 
widget.show() 

लेकिन यह एक बहुत ही गंदा ठीक है। क्या विजेट रीफ्रेश करने के लिए python बताने का कोई बेहतर तरीका है?

धन्यवाद।

+0

मैंने विजेट के माता-पिता पर अपडेट() को आजमाया लेकिन यह कुछ भी नहीं कर रहा था। वास्तव में, मुझे बस एहसास हुआ कि अद्यतन() केवल विजेट को अद्यतन करता है लेकिन इसके बच्चों को नहीं। इस विजेट पर काम करना और अपडेट करना() –

+0

इसलिए यदि आपकी समस्या हल हो गई है, तो कृपया एक उत्तर दें (आपके लिए सबसे अच्छा) स्वीकृत के रूप में (इस प्रश्न को हल करने के लिए भी चिह्नित करें) – Chernobyl

उत्तर

6

विजेट अद्यतन करने के लिए, आप इसे repaint() चाहिए, लेकिन बुला repaint() सीधे बहुत अच्छा नहीं है, इसलिए कोशिश:

widget.update() 

From doc:

यह समारोह एक तत्काल रीपेंट का कारण नहीं है; इसके बजाए यह क्यूटी मुख्य इवेंट लूप पर लौटने पर प्रसंस्करण के लिए एक पेंट इवेंट शेड्यूल करता है। यह क्यूटी को अधिक गति के लिए ऑप्टिमाइज़ करने और पुन: चित्रित करने के लिए कॉल की तुलना में झिलमिलाहट करने की अनुमति देता है।

कॉलिंग अपडेट() कई बार आम तौर पर केवल paintEvent() कॉल में परिणाम देता है।

क्यूटी आमतौर पर paintEvent() कॉल से पहले विजेट के क्षेत्र को मिटा देता है। यदि क्यूटी :: WA_OpaquePaintEvent विजेट विशेषता सेट है, तो विजेट अपने सभी पिक्सेल को अपारदर्शी रंग के साथ चित्रित करने के लिए ज़िम्मेदार है।

2

आप पहले से ही QWidget.update()

कोशिश यह फ़ंक्शन केवल दिखाई अदृश्य भागों अछूता रखने भागों को अद्यतन करता था।

संबंधित मुद्दे