2011-07-07 22 views
9

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

#!/usr/bin/env python 

import sys, os 
import pygtk, gtk, gobject 

class app: 

    def __init__(self): 
    window = gtk.Window(gtk.WINDOW_TOPLEVEL) 
    window.set_title("TestApp") 
    window.set_default_size(320, 240) 
    window.connect("destroy", gtk.main_quit) 
    window.show_all() 

app() 
gtk.main() 

मैं इस विंडो के अंदर दायाँ क्लिक करना चाहता हूं, और मेनू को अलर्ट, कॉपी, एक्जिट, जो कुछ भी मुझे लगता है, जैसे पॉप अप करना है।

मैं इसे कैसे पूरा करूं?

+0

सबसे पहले, आपको पढ़ना चाहिए कि जीटीके घटनाओं का उपयोग कैसे करता है। कुछ करने के लिए राइट-क्लिक करने के साथ शुरू करें, फिर संदर्भ मेनू को कैसे करें पर पढ़ें। मैंने कभी भी पीजीजीटीके या जीटीके का उपयोग नहीं किया है, लेकिन इसके लिए शायद एक विजेट है। – JAB

उत्तर

12

http://www.pygtk.org/pygtk2tutorial/sec-ManualMenuExample.html

में पाया यह बहुत ही बात यह है आप कैसे एक मेनू यह एक मेनू पट्टी करने के लिए देते हैं और यह भी एक माउस बटन क्लिक करें घटना के लिए सुन सकते हैं और बहुत ही मेनू पॉपअप बनाने के लिए पता चलता करने के लिए एक उदाहरण है कि बनाया गया था।

मुझे लगता है कि यह वही है जो आप के बाद हैं।

संपादित करें:

संक्षेप में प्रस्तुत करना (केवल सही माउस बटन घटनाओं के लिए प्रतिक्रिया करने के लिए कैसे दिखाने के लिए अधिक विवरण जोड़ा)।

माउस ईवेंट को सुनने के लिए विजेट बनाएं। इस मामले में यह एक बटन है।

button = gtk.Button("A Button") 

एक मेनू

menu = gtk.Menu() 

मेनू आइटम

menu_item = gtk.MenuItem("A menu item") 
menu.append(menu_item) 
menu_item.show() 

के साथ भरें बनाएं इसे करने के लिए मेनू संलग्न, विजेट माउस प्रेस की घटनाओं के लिए सुनने बनाओ।

button.connect_object("event", self.button_press, menu) 

फिर इन घटनाओं को संभालने वाली विधि को परिभाषित करें। जैसा कि लिंक में उदाहरण में बताया गया है, इस विधि को पास किया गया विजेट वह मेनू है जिसे आप इन घटनाओं के लिए सुन रहे विजेट को पॉप अप नहीं करना चाहते हैं।

def button_press(self, widget, event): 
    if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3: 
     #make widget popup 
     widget.popup(None, None, None, event.button, event.time) 
     pass 

आपको लगता है कि अगर सच है यह तो देखने के लिए जो बटन के दबाया गया था की जाँच करेगा कि बयान जांच करता है कि बटन दबाया गया था देखने के लिए अगर, देखेंगे। Event.button एक पूर्णांक मान है, जो दर्शाता है कि कौन सा माउस बटन दबाया गया था। तो 1 बायां बटन है, 2 मध्यम है और 3 सही माउस बटन है। यह देखने के लिए कि ईवेंट.बटन 3 है या नहीं, आप केवल दाएं माउस बटन के लिए माउस प्रेस इवेंट्स का जवाब दे रहे हैं।

+0

धन्यवाद! यह वही है जो मैं समझने की कोशिश कर रहा हूं। केवल समस्या हालांकि मेनू बाएं क्लिक, साथ ही दाईं ओर दिखाता है। जिसमें मैं इसे बाएं क्लिक पर दिखाना नहीं चाहता, लेकिन मुझे इसे ठीक करने में सक्षम होना चाहिए। धन्यवाद! –

+0

@ mikethedj4: क्या आप कृपया बता सकते हैं कि पॉप-अप मेनू को ट्रिगर करने वाले क्लिक को परिभाषित करने के लिए आपने कैसे/कैसे हासिल किया है? धन्यवाद। – Benjamin

+1

@ बेंजामिन: मुझे लगता है कि उत्तर अब –

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