我想定义几个插件。它们都继承自超类 Plugin。
每个插件都包含一个 wx.Panel,它有一个更具体的方法叫做“draw”。
如何将类定义为面板,然后在我的框架中调用该类?
我试过这样:
class Panel(wx.Panel):
def __init__(self, parent):
wx.Panel(self, parent)
Run Code Online (Sandbox Code Playgroud)
但它给了我这个错误:
in __init__
_windows_.Panel_swiginit(self,_windows_.new_Panel(*args, **kwargs))
TypeError: in method 'new_Panel', expected argument 1 of type 'wxWindow *'
Run Code Online (Sandbox Code Playgroud)
提前致谢!
嗨,大家好,
我正在使用 python 2.4.3 和 wxpython 开发 GUI。一切正常,除非我退出主程序(关闭 GUI 的主窗口)。奇怪的是,有时有这样的错误,有时根本没有错误。虽然我从 python 邮件列表中发现了相同的错误报告(链接是http://bugs.python.org/issue1722344,我不确定我的情况是否与这个相同)。我不知道它最终是如何解决的,我应该怎么做才能克服这个问题。
来自控制台的错误消息如下。
Exception in thread Thread-1 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
File "/usr/lib/python2.4/threading.py", line 442, in __bootstrap
File "/opt/company/workspace/username/application/src/mainwidget.py", line 1066, in run
File "/usr/lib/python2.4/Queue.py", line 89, in put
File "/usr/lib/python2.4/threading.py", line 237, in notify
exceptions.TypeError: exceptions must be classes, instances, or strings (deprecated), not NoneType
Unhandled exception in thread started by
Error in sys.excepthook:
Original exception was:
Run Code Online (Sandbox Code Playgroud)
下面是我的部分代码(线程相关的代码已经完成,剩下的我提取主要操作)。当我使用 GUI 启动外部子进程时,同时创建了一个 …
我有一个 GridBagSizer (控件),它放置在面板(ctrlPanel)上并使用
controls.Fit(ctrlPanel)
ctrlPanel.SetSizer(controls)
Run Code Online (Sandbox Code Playgroud)
现在面板被放置在 BoxSizer 中
mainSizer = wx.BoxSizer(wx.VERTICAL)
mainSizer.Add(ctrlPanel, 0, wx.EXPAND|wx.ALL, 10)
Run Code Online (Sandbox Code Playgroud)
但是,在框中添加面板周围的空间(而不是面板上的网格)确实会导致面板周围出现“深灰色”边框。
在将 GridBagSizer 安装到面板之前,是否有一种“lege artis”方法可以在 GridBagSizer 周围添加空间?或者我是否需要破解已填充单元格周围的空单元格?
拾柴者说谢谢
我是一名电气工程师在python中有一个大型的正在进行的项目.这是我第一次编程GUI,我首先选择了wxPython并继续使用它,因为它很容易学习.我一直担心将我的数据与演示文稿分开我刚学会了MVC框架:)现在我想改变我的代码遵循MVC规则,但我找不到任何wxPython.有pyQt有这个,但我希望这是我的最后一个解决方案,因为我没有时间坐下来学习.
你碰巧知道要使用的wxPython MVC框架吗?
如何在wxpython中添加指向菜单项的链接?我想要的是当用户点击菜单项时它会进入我的网站.这甚至可能吗?
提前致谢!!哦,我是编程和python的新手,所以如果你可以愚蠢下来,这将是赞赏!谢谢
这是我的代码:
import wx
class MainWindow(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,'Python Test App',size=(600,400))
panel=wx.Panel(self)
wx.Frame.CenterOnScreen(self)
self.SetBackgroundColour(wx.BLACK)
##MENU AND STATUS BAR
status=self.CreateStatusBar()
menubar=wx.MenuBar()
file_menu=wx.Menu()
help_menu=wx.Menu()
ID_FILE_NEW = 1
ID_FILE_EXIT = 2
ID_HELP_ABOUT = 3
ID_HELP_WEB = 4
file_menu.Append(ID_FILE_NEW,"New Window","This will open a new window")
file_menu.Append(ID_FILE_EXIT,"Exit","This will exit the program")
help_menu.Append(ID_HELP_ABOUT,"About","This will tell you about %name%")
help_menu.Append(ID_HELP_WEB,"Visit Website","This will take you to worm-media.host56.com")
menubar.Append(file_menu,"File")
menubar.Append(help_menu,"Help")
self.SetMenuBar(menubar)
self.Bind(wx.EVT_MENU, self.newWin, None, 1)
self.Bind(wx.EVT_MENU, self.close, None, 2)
self.Bind(wx.EVT_MENU, self.about, None, 3)
##self.Bind(wx.EVT_MENU, self.web, None, 4)
heading …Run Code Online (Sandbox Code Playgroud) 我最近学习wxPython通过wxPython in Action,但我被困在第3章,特别是对的解释Figure 3.3的Skip()钻石
在Step 3 Locating the binder object,书中写道:
如果没有找到对象本身的绑定器,则处理在类层次结构中向上查找在对象的超类中定义的绑定 - (1)这与在容器层次结构中的向上走动不同下一步.
但在下一步中,Step 4 Determining whether to continue processing写道:
事件处理程序通过调用wx.Event方法Skip()来请求更多处理.如果调用Skip()方法,则继续处理,并且(2)在步骤中找到并执行在(3)超类中定义的任何处理程序.可以在处理程序中的任何位置调用Skip()方法.Skip()方法在事件实例中设置一个标志,wxPython在处理程序方法完成后进行检查.在清单3.3中,OnButtonClick()不调用Skip(),因此在这种情况下,事件处理在处理程序方法结束时完成.另外两个事件处理程序会调用Skip()(4),因此系统将继续搜索匹配的事件绑定,(5)最终调用鼠标进入和离开事件的默认功能,例如鼠标悬停事件.
我的问题与我在段落中标记的数字有关:
(1)在我的理解和其他一些googled材料中,传播是在容器层次结构中发生的事情,而不是类层次结构,这是正确的吗?
(2)说真的吗?任何处理程序都被执行?不是匹配实例和事件组合的那些?
(3)这里的超类是否正确?不应该是父窗户吗?
(4)我认为这一行与question2相矛盾,所以也许没有执行任何处理程序,只是匹配实例和事件组合的处理程序?
(5)什么是default functionality?它是如何被调用的?
如果有人有兴趣,list-3.3.py就在这里:
import wx
class MouseEventFrame(wx.Frame):
def __init__(self, parent, id):
wx.Frame.__init__(self, parent, id, 'Mouse Events',
size=(300, 200))
self.panel = …Run Code Online (Sandbox Code Playgroud) 我在 wxpython 中有一些令人困惑的行为。我刚刚将最新版本 (3.0.0.0) 加载到带有 Python 2.6.6 的 RHEL 6.4 中。
大多数事情似乎都有效,但我之前运行带有背景图像的 gui 的代码失败了。所有按钮都可以工作,等等,但背景只是默认的灰色。
我尝试通过运行 Mike Driscoll 的 python 网站 ( http://www.blog.pythonlibrary.org/2010/03/18/wxpython-putting-a-background-image-on-a-panel /),并且遇到了同样的问题,除了默认的灰色背景之外没有其他背景显示(我之前在另一台机器上使用过他的示例,其中有旧版本的 wxpython [2.8.12.1] 没有问题):
import wx
########################################################################
class MainPanel(wx.Panel):
""""""
#----------------------------------------------------------------------
def __init__(self, parent):
"""Constructor"""
wx.Panel.__init__(self, parent=parent)
self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
self.frame = parent
sizer = wx.BoxSizer(wx.VERTICAL)
hSizer = wx.BoxSizer(wx.HORIZONTAL)
for num in range(4):
label = "Button %s" % num
btn = wx.Button(self, label=label)
sizer.Add(btn, 0, wx.ALL, 5)
hSizer.Add((1,1), 1, wx.EXPAND)
hSizer.Add(sizer, 0, wx.TOP, 100)
hSizer.Add((1,1), 0, wx.ALL, 75)
self.SetSizer(hSizer) …Run Code Online (Sandbox Code Playgroud) 我正在制作一个Python程序,在某些功能中它需要隐藏X和展开窗口按钮,我该怎么做?我使用 WxPython,我该如何将其放入?
我希望将 GUI 应用程序中按钮的背景颜色更改为默认值。在线搜索后,我看到了
button1.SetBackgroundColour(wx.NullColor) 似乎不起作用。我正在使用 python 2.7。
有没有其他方法可以将它设置为默认颜色而不使用系统颜色
我正在使用 WxPython 构建一个 GUI,并且想知道是否有办法将文本放入仪表进度条中。这是为了通过图像和文本向用户显示电池状态。