亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Tkinter 中單擊按鈕時的彈出菜單

Tkinter 中單擊按鈕時的彈出菜單

德瑪西亞99 2023-07-11 15:37:32
我的代碼有一個小問題。我的界面上需要一個彈出菜單,不是在按下鼠標右鍵時彈出,而是在單擊按鈕(tkinter 小部件)時彈出。一個例子是這樣的:http://effbot.org/zone/tkinter-popup-menu.htm但是,我想在與按鈕相同的坐標處創建彈出菜單,而不是事件坐標。self.popup_menu.tk_popup(x_button, y_button, 0)問題是,當我移動界面窗口或滾動滾動條(我的界面中有一個)并再次單擊按鈕時,彈出菜單的創建位置不是按鈕所在的確切位置??磥?.tk_popup 僅采用窗口坐標而不是畫布坐標。有人知道解決方案嗎?編輯:這是一個例子:from Tkinter import *root = Tk()popup = Menu(root, tearoff=0)popup.add_command(label="Main Product")popup.add_command(label="Side Product")def popupm(x, y):     try:           popup.tk_popup(x, y, 0)     finally:           popup.grab_release()x = 10y = 15bt = Button(root, text='Menu', command= lambda: popupm(x , y))bt.place(x = 10, y = 15)root.mainloop()問候!
查看完整描述

2 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

按鈕有幾個方法可以滿足您的需求: .winfo_rootx() 和 .winfo_rooty() 這是一個工作示例:


from Tkinter import *


root = Tk()


popup = Menu(root, tearoff=0)

popup.add_command(label="Main Product")

popup.add_command(label="Side Product")


def popupm(bt):

     try:         

        x = bt.winfo_rootx()

        y = bt.winfo_rooty()

        popup.tk_popup(x, y, 0)

     finally:

           popup.grab_release()


bt = Button(root, text='Menu')

bt.configure(command = lambda: popupm(bt))

bt.place(x = 10, y = 15)


root.mainloop()

我在 python3 中測試了它,抱歉,如果它沒有轉換為 2。如果您遇到任何問題或需要幫助調整它,請告訴我們。


查看完整回答
反對 回復 2023-07-11
?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

請將此示例轉換為適合網格而不是打包或放置



查看完整回答
反對 回復 2023-07-11
  • 2 回答
  • 0 關注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號