簡體   English   中英

使用 PyGTK 的右鍵單擊菜單(上下文菜單)

[英]Right Click Menu (context menu) using PyGTK

所以我對 Python 還是很陌生,並且已經學習了幾個月,但我想弄清楚的一件事是說你有一個基本的 window ...

#!/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()

我想在這個 window 內單擊鼠標右鍵,然后彈出一個菜單,如警告、復制、退出,無論我想放下什么。

我將如何做到這一點?

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

您將看到 if 語句檢查按鈕是否被按下,如果是真的,它將檢查哪個按鈕被按下。 event.button 是一個 integer 值,表示按下了哪個鼠標按鈕。 所以1是左鍵,2是中鍵,3是鼠標右鍵。 通過檢查 event.button 是否為 3,您僅響應鼠標右鍵的鼠標按下事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM