Hi,
I am using Fedora 35 on Wayland, Python 3.9 and wxpython 4.1.1
Below is a generic example of a popup menu but the menu does not show when I right click.
Instead I get this error:
Gdk-Message: 15:44:34.818: Window 0x55c64daf3b70 is a temporary window without parent, application will not be able to position it on screen.
(test.py:211925): Gdk-CRITICAL **: 15:44:34.835: gdk_wayland_window_handle_configure_popup: assertion 'impl->transient_for' failed
What can I do about this?
Thanks.
import wx
class MyFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, "Popup Menu Example")
self.panel = p = wx.Panel(self)
menu = wx.Menu()
exit = menu.Append(-1, "Exit")
self.Bind(wx.EVT_MENU, self.OnExit, exit)
menuBar = wx.MenuBar()
menuBar.Append(menu, "Menu")
self.SetMenuBar(menuBar)
wx.StaticText(p, -1, "Right-click on the panel to show a popup menu", (25, 25))
self.popupmenu = wx.Menu()
for text in "one two three four five".split():
item = self.popupmenu.Append(-1, text)
self.Bind(wx.EVT_MENU, self.OnPopupItemSelected, item)
p.Bind(wx.EVT_CONTEXT_MENU, self.OnShowPopup)
def OnShowPopup(self, event):
pos = event.GetPosition()
pos = self.panel.ScreenToClient(pos)
self.panel.PopupMenu(self.popupmenu, pos)
def OnPopupItemSelected(self, event):
item = self.popupmenu.FindItemById(event.GetId())
text = item.GetText()
wx.MessageBox("You selected item '%s'" % text)
def OnExit(self, event):
self.Close()
app = wx.PySimpleApp()
frame = MyFrame()
frame.Show()
app.MainLoop()