【问题标题】:pos argument for popup transient window in wxpythonwxpython中弹出瞬态窗口的pos参数
【发布时间】:2016-05-02 09:07:01
【问题描述】:

我正在尝试制作自定义弹出窗口并做了以下事情。

class MyDialog(wx.PopupTransientWindow):

    def __init__(self, parent, title, cellnum, cmd, **kwargs): 
        super(MyDialog, self).__init__(parent, style=wx.CLIP_CHILDREN | wx.FRAME_NO_TASKBAR |wx.FRAME_SHAPED, **kwargs)
        # def __init__(self, parent, style, cellnum, cmd):
        # super(MyDialog, self).__init__(parent, style=wx.CLIP_CHILDREN | wx.FRAME_NO_TASKBAR | wx.NO_BORDER|wx.FRAME_SHAPED)

        # self.panel = wx.Panel(self)
        #size=(255,200)#one kind of size
        self.panel = Panel1(self)

但是当我通过以下方式调用它时:

dial = MyDialog(self, "mydialog", wx.id, cmd, pos=ldPos)

它显示以下错误:

Traceback (most recent call last):
  File "D:\X000T9P77\projects\MYTEST\docs\MYTEST_gui_module_src\MYTESTGUI.py", line 1465, in ShowMessage1
    dial = MyDialog(self, "CELL "+id, id, cmd, pos=ldPos)
  File "D:\X000T9P77\projects\MYTEST\docs\MYTEST_gui_module_src\MYTESTGUI.py", line 103, in __init__
    super(MyDialog, self).__init__(parent, style=wx.CLIP_CHILDREN | wx.FRAME_NO_TASKBAR |wx.FRAME_SHAPED, **kwargs)
  File "C:\Python27\lib\site-packages\wx-3.0-msw\wx\_windows.py", line 2141, in __init__
    _windows_.PopupTransientWindow_swiginit(self,_windows_.new_PopupTransientWindow(*args, **kwargs))
TypeError: new_PopupTransientWindow() takes at most 2 arguments (3 given)

任何人都可以帮助我吗? 非常感谢。

【问题讨论】:

    标签: python python-2.7 wxpython superclass


    【解决方案1】:

    由于PopupTransientWindow()最多接受2个参数,我建议你改成:

    super(MyDialog, self).__init__(parent, style=wx.CLIP_CHILDREN | wx.FRAME_NO_TASKBAR |wx.FRAME_SHAPED) #, **kwargs)
    

    要设置瞬态窗口的位置,可以使用Position

      def Position(*args, **kwargs):
    
      """Position(self, Point ptOrigin, Size size)"""
      return _windows_.PopupWindow_Position(*args, **kwargs)
    

    【讨论】:

    • 谢谢大佬帮助很多:)
    【解决方案2】:

    PopupTransientWindow 只接受 2 个参数 parent 和 flags,您的代码正在传递这 2 个,而且它还试图传递一个 pos 参数。

    排队

    super(MyDialog, self).__init__(parent, style=wx.CLIP_CHILDREN | wx.FRAME_NO_TASKBAR |wx.FRAME_SHAPED, **kwargs)
    

    **kwargs 将其传递给 pos=ldPos

    【讨论】:

    • 感谢您的回复。有什么方法可以传递位置并将其设置为瞬态窗口?
    • @SB07 尝试 Move(pt, flags) 或 MoveXY(x, y, flags) 方法。
    猜你喜欢
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    相关资源
    最近更新 更多