2012-12-01 30 views
6

मैं अजगर और जीटीके का उपयोग कर एक और छवि दर्शक के विकास कर रहा हूँ और दर्शक वर्तमान में बहुत सरल है: यह अपनी छवियों की सूची प्रदर्शित करने के बाईं ओर एक GtkTreeView, और सही पक्ष पर एक GtkImage के साथ एक GtkWindow के होते हैं, प्रदर्शित वास्तविक छवि अब तक सब ठीक है.पूर्णस्क्रीन पर जीटीके एप्लिकेशन के लेआउट को कैसे बदलें?

अब, मैं पूर्ण स्क्रीन जाना है, और एक काले रंग की पृष्ठभूमि के साथ ही छवि प्रदर्शित, आदि

मैं यह कर के कई तरीके से देख सकते हैं करना चाहते हैं:

  • मैं छिपा कर सकते हैं() खिड़की, और इसके बजाय एक बड़ा GtkImage प्रदर्शित करें, लेकिन मैं पहले से ही खिड़की पर सेट की गई सभी चीजों को खो रहा हूं (उदाहरण के लिए संकेत), और मैं खिड़की को छुपा रहा हूं जो पूर्णस्क्रीन चला जाता है, जो थोड़ा अजीब है;
  • मैं खिड़की की सामग्री को छुपा सकता हूं, खिड़की की सामग्री को हटा सकता हूं (जिसमें केवल एक बच्चा हो सकता है, जहां तक ​​मुझे पता है?), और इसके बजाय GtkImage डालें (और पूर्णस्क्रीन से बाहर निकलने पर विपरीत करें);
  • मैं अपनी खिड़की के अंदर कंटेनर के साथ खेलने की कोशिश कर सकता हूं, और जब खिड़की पूर्णस्क्रीन/पूर्णस्क्रीन से बाहर जा रहा है तो अपनी सामग्री छुपा/दिखा रहा है। अधिक सटीक, मैं एक और GtkHBox को अपनी खिड़की के प्रत्यक्ष बच्चे के रूप में दो बच्चे के साथ जोड़ने और "सामान्य" मोड पर केवल पहला प्रदर्शित करने और पूर्णस्क्रीन पर केवल दूसरा प्रदर्शित करने की सोच रहा था।

यह सब कुछ हैकी लगता है, इसलिए मुझे आश्चर्य है कि इस तरह की स्थिति को संभालने का अनुशंसित तरीका क्या होगा। धन्यवाद!

उत्तर

6

मुझे लगता है कि इसे लागू करने का सबसे आसान तरीका यह है कि आपके सभी विजेट सेटअप और सिग्नल सेटअप के साथ एक लेआउट हो। फिर जब आप पूर्णस्क्रीन को अंदर और बाहर टॉगल करते हैं तो आपके पास विजेट्स का एक सेट होता है जिसे आप दृश्यमान बनाते हैं और दिखाई नहीं देते हैं। नीचे प्रदर्शन का प्रयास करें। जब आप F11 दबाते हैं तो यह एक सरल कार्यान्वयन है जो पूर्णस्क्रीन में जाता है और बाहर जाता है। लेआउट बनाने के लिए एक एचबॉक्स का उपयोग किया जाता है, जिसमें बाईं ओर एक लेबल होता है और दाईं ओर एक छवि होती है। मैंने लेबल को कुछ डमी टेक्स्ट से भर दिया है ताकि यह अच्छी मात्रा में जगह ले सके। जैसे ही आप पूर्णस्क्रीन में टॉगल करते हैं और लेबल के दृश्यता को टॉगल करते हैं और इस प्रकार छवि को पूर्ण स्क्रीन रीयल एस्टेट लेते हैं या इसे लेबल के साथ साझा करते हैं। मैंने सिर्फ स्टॉक छवियों में से एक का उपयोग किया जो प्रदर्शन उद्देश्यों के लिए gtk के साथ आता है। नीचे दो स्क्रीनशॉट हैं जो पूर्णस्क्रीन के अंदर और बाहर लेआउट दिखाते हैं।

कोड

import gtk 

def keypress(win, event): 
    if event.keyval == gtk.keysyms.F11: 
     win.is_fullscreen = not getattr(win, 'is_fullscreen', False) 
     action = win.fullscreen if win.is_fullscreen else win.unfullscreen 
     action() 
     label.set_visible(not win.is_fullscreen) 

win = gtk.Window() 
win.connect("delete-event", gtk.main_quit) 
win.connect('key-press-event', keypress) 
image = gtk.image_new_from_stock(gtk.STOCK_ABOUT, gtk.ICON_SIZE_DIALOG) 
label = gtk.Label(('test ' * 20 + '\n') * 20) 
vbox = gtk.HBox() 
vbox.add(label) 
vbox.add(image) 
win.add(vbox) 
win.show_all() 
gtk.main() 

सामान्य खिड़की

enter image description here

पूर्ण स्क्रीन

enter image description here

+0

ठीक है, हमारी पोस्ट पढ़ते हुए, मुझे अभी एहसास हुआ कि मेरे पास पूर्णस्क्रीन पर छिपाने/दिखाने के लिए 3 विजेट/कंटेनर हैं या नहीं। इसलिए, जब मैं मोड को बदलता हूं, तो बस उन लोगों की दृश्यता को टॉगल करना, जैसा आपने अपने उदाहरण में किया था, काफी पर्याप्त है ... –

+0

@multani यह सुनकर खुशी हुई कि यह आपके लिए काम करता है। –

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

  • कोई संबंधित समस्या नहीं^_^