标签: wxpython

将事件绑定到wx.Menu()而不是绑定到wxPython中的菜单项

我可以使用以下代码轻松定义我的问题:

self.Bind(wx.EVT_MENU_OPEN, self.OnAbout)
Run Code Online (Sandbox Code Playgroud)

这意味着当我点击MenuBar中的任何wx.Menu()时,会调用函数'onAbout()'.如何将此事件绑定到名为wx.MenuAbout()的特定wx.Menu()?

如果您感觉更有帮助,也许您可​​以向我提供事件处理程序文档的链接.我可以找到事件处理函数的文档,但不能找到实际的事件处理程序(例如wx.EVT_MENU).

类似的问题,但我不打算将一系列wx.Menu()绑定到事件:是否可以将事件绑定到菜单而不是wxPython中的菜单项?

编辑:理想情况下,这是我希望能够做到的:

menuAbout = wx.Menu()
self.Bind(wx.EVT_MENU, self.OnAbout, id=menuAbout.GetId())
Run Code Online (Sandbox Code Playgroud)

结果是.menuBar()中的任何其他项(例如:File,Edit,Tools)都可以作为普通菜单使用,但"About"的工作方式类似于可点击链接.

使用wx.EVT_MENU_OPEN意味着可以打开文件菜单,然后当鼠标悬停在'about'上时,会调用self.OnAbout函数,我只会在用户单击"关于"菜单时发生这种情况.

python wxpython

1
推荐指数
1
解决办法
4314
查看次数

Python中的类问题

好吧,我是python(并编程本身)的新手,对我的无知感到抱歉,但我真的需要问这个问题.所以我正在做一个wxPython项目,我为笔记本添加了几个选项卡(笔记本的每个选项卡=一个类),并且有一个选项卡,我添加了一个复选框(在选项卡中,我们称之为Tab1),以及我想要的是,当有人检查它时,存在于其他选项卡中的按钮(例如,名为tab2的类)将被隐藏在之前显示的位置.

好吧,我看到实现这一点并不难,但我的问题是类(在本例中为tab1和tab2).我一直试图通过搜索来弄明白,但我想我的搜索力度不够,因为我无法做到正确.如果他们在同一个班级我就不会有问题,但由于他们在不同的班级,我正在与此进行巨大的斗争.

希望有人可以帮助我,并再次为我的无知感到抱歉.

编辑:抱歉,人们没有被显示/隐藏,而是被启用/禁用.

class Tab2(wx.Panel):
    def __init__(self, parent):
    .....
        self.jaddbutton = wx.Button(self,-1, label ="Button", size = (160,24))
        self.jaddbutton.Bind(wx.EVT_BUTTON, self.jaddbuttonclick, self.jaddbutton)
    def jaddbuttonclick(self, event):
        ....
class Tab1(wx.Panel):
    def __init__(self, parent):
        self.jdcheck = wx.CheckBox(self, -1, 'Disable')
        self.jdcheck.Bind(wx.EVT_CHECKBOX, self.checkoptions, self.jdcheck)
    def checkoptions(self,event):
        checkboxval = self.jdcheck.GetValue()
        if checkboxval == False:
            self.jaddbutton.Disable() # This is what I want to do but it is on the other class

        else:
            self.jaddbutton.Enable() # Same as above

class TextFrame(wx.Frame):
   def __init__(self):
       p = wx.Panel(self)
       self.nb = wx.Notebook(p, size …
Run Code Online (Sandbox Code Playgroud)

python wxpython class

1
推荐指数
2
解决办法
266
查看次数

wxPython全窗口焦点事件

使用wxPython,每当整个窗口进入/失去焦点时,如何触发一个事件?

详细地说,我正在构建一个串行终端GUI,并希望在用户未选择我的应用程序时就关闭连接,并在用户使我的应用程序回到前台时重新打开该连接。我的应用程序只是一个从wx.Frame派生的窗口。

python wxwidgets wxpython

1
推荐指数
1
解决办法
1911
查看次数

告知实例是否已被销毁

我有一个对象实例列表(wxPython小部件).我希望能够判断列表中的实例是否已被销毁.怎么会这样呢?

python wxpython list instance

1
推荐指数
1
解决办法
622
查看次数

如何遍历所有wx.CheckBox实例?

我有一个wx框架,我有很多复选框.用户经常在下拉菜单(wx.ComboBox)中更改设置时,我想清除所有复选框.目前,我已经实现了一个方法,当ComboBox发生更改时会调用它并手动清除每个复选框,即:

def ClearCheckBoxes(self):
    self.cb_EnableControl.SetValue(0)
    self.cb_EnableRun.SetValue(0)
    self.cb_EnablePower.SetValue(0)
    ...
    ...
Run Code Online (Sandbox Code Playgroud)

虽然我只有大约10个,但如果是这样的话,我的ClearCheckBoxes方法会更清晰:

def ClearCheckBoxes(self):
    for CheckBox in self.AllCheckBoxes:
        CheckBox.SetValue(0)
Run Code Online (Sandbox Code Playgroud)

另外,我想我可以创建一个列表(即AllCheckBoxes)和所有复选框添加到列表中,我创建它们,那就只能通过列表迭代的问题.但这里的重点是,我想知道是否有预定义的方法来做到这一点.

谢谢

python wxwidgets wxpython

1
推荐指数
1
解决办法
602
查看次数

使用Pyinstaller编译应用程序,但在运行生成的exe时不要启动cmd

我如何使用Pyinstaller"编译"GUI应用程序,并且在运行可执行文件时只获取生成的GUI wxPython?目前,当我运行exe时,弹出一个cmd窗口,然后弹出wxPython窗口.我在调试时这很好,但是当我分发我的应用程序时,它不会有任何用处(可能甚至是oposite!).

cmd wxpython pyinstaller

1
推荐指数
1
解决办法
6036
查看次数

python登录到文件以及wxpython txt ctrl

如何登录文件以及wxpython txt ctrl?

背景我有基于wxpython GUI的应用程序,它枚举python测试文件并执行它们.在http://broadcoder.blogspot.com/2009/10/redirecting-python-logging-to.html的帮助下,我能够将python日志消息重定向到txtctrl.但是,我也想将日志消息重定向到日志文件.我导入我的测试文件,如下所示:

     logging.info('Started')
     testid = __import__(str)
     reload(testid)

     testOut = testid.main()
Run Code Online (Sandbox Code Playgroud)

在我的每个测试文件中,我只使用导入日志记录,我的日志消息被重定向到txt ctrl.但是,我还希望测试日志消息也可以根据文件名重定向到日志文件.如何将日志消息重定向到两者?如果我在我的测试文件中使用logging.basicConfig消息仍然仅指向文本ctrl.我在其中导入的TestGUI.py说5个python测试文件.在我的测试文件文件中,我只是在我的TestGUI.py文件中设置记录器时使用导入记录

    self.logr = logging.getLogger('')
    self.logr.setLevel(logging.INFO)
    hdlr = WxLog(self.log)
    hdlr.setFormatter(logging.Formatter('%(message)s '))
    self.logr.addHandler(hdlr)
Run Code Online (Sandbox Code Playgroud)

在我的测试文件中,我做了类似这样的事情:

      logger = logging.getLogger('')   
      fh = logging.FileHandler("log.html",mode='w')
      formatter = logging.Formatter('%(message)s')
      fh.setFormatter(formatter)
      logger.addHandler(fh)
      a= 5
      b= 6

      logging.info('a=5')
      logging.info('b=6')
      c= a+b
      logging.info('adding b and  c')
      fh.close()
Run Code Online (Sandbox Code Playgroud)

当我多次运行此测试时,我得到ValueError:关闭文件的I/O操作.

python logging wxpython

1
推荐指数
1
解决办法
685
查看次数

在Ubuntu 11.10上安装wxPython

希望有人帮我安装wxPython.我有ubuntu 11.10并且没有构建包.我使用此页面(http://wxpython.org/BUILD.html)作为安装后安装的指导,我运行

>python

>>>import wx

 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "wx/__init__.py", line 45, in <module>
    from wx._core import *
  File "wx/_core.py", line 4, in <module>
    import _core_
ImportError: libwx_gtk2u_adv-2.9.so.3: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

应该怎么做才能解决它?谢谢!

python installation ubuntu wxpython

1
推荐指数
1
解决办法
5778
查看次数

PostgreSQL中的SELECT查询

我试图使用WHERE子句从变量中的PostgreSQL数据库中检索值,但我收到一个错误.

查询是:

select age into x from employee where name=name.GetValue()
Run Code Online (Sandbox Code Playgroud)

name 是我从wxpython GUI输入值的textcontrol.

我收到错误,因为名称架构不存在.

检索值的正确方法是什么?

postgresql wxpython

1
推荐指数
1
解决办法
182
查看次数

wxPython中的Python GUI程序将无法运行

我有以下代码,我正在按照教程:

(http://zetcode.com/wxpython/layout/ - GoToClass部分)

我无法弄清楚它有什么问题......:/

正如您在教程中看到的,它应该产生这样:

在此输入图像描述

代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-

# gotoclass.py

import wx

class Example(wx.Frame):

    def __init__(self, parent, title):
        super(Example, self).__init__(parent, title=title, 
            size=(390, 350))

        self.InitUI()
        self.Centre()
        self.Show()     

    def InitUI(self):

        panel = wx.Panel(self)

        font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT)
        font.SetPointSize(9)

        vbox = wx.BoxSizer(wx.VERTICAL)

        hbox1 = wx.BoxSizer(wx.HORIZONTAL)
        st1 = wx.StaticText(panel, label='Class Name')
        st1.SetFont(font)
        hbox1.Add(st1, flag=wx.RIGHT, border=8)
        tc = wx.TextCtrl(panel)
        hbox1.Add(tc, proportion=1)
        vbox.Add(hbox1, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10)

        vbox.Add((-1, 10))

        hbox2 = wx.BoxSizer(wx.HORIZONTAL)
        st2 = wx.StaticText(panel, label='Matching Classes')
        st2.SetFont(font)
        hbox2.Add(st2)
        vbox.Add(hbox2, flag=wx.LEFT | wx.TOP, …
Run Code Online (Sandbox Code Playgroud)

python wxpython

1
推荐指数
1
解决办法
191
查看次数