标签: wxpython

wxPython进度条

我无法使用,wx.ProgressDialog因为我需要在对话框中添加额外的内容(暂停按钮和有关当前正在处理的内容的信息).是否只有我可以在自己的对话框中使用的进度条控件?

我当然可以自己绘制一些简单的东西,但由于程序需要在Mac OS X,Windows和Linux上运行,因此进度条具有原生外观会更好.

python wxpython

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

如何在MouseOver上更改wx.Panel背景颜色?

这段代码:

import wx

app = None

class Plugin(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        wx.Panel.__init__(self, parent, *args, **kwargs)
        self.SetBackgroundColour((11, 11, 11))
        self.name = "plugin"

        self.Bind(wx.EVT_ENTER_WINDOW, self.onMouseOver)
        self.Bind(wx.EVT_LEAVE_WINDOW, self.onMouseLeave)

        wx.EVT_ENTER_WINDOW(self, self.onMouseOver)
        wx.EVT_LEAVE_WINDOW(self, self.onMouseLeave)

    def onMouseOver(self, event):
        self.SetBackgroundColor((179, 179, 179))
        self.Refresh()

    def onMouseLeave(self, event):
        self.SetBackgroundColor((11, 11, 11))
        self.Refresh()

    def OnClose(self, event):
        self.Close()
        app.Destroy()

    def name():
        print self.name


app = wx.App()
frame = wx.Frame(None, -1, size=(480, 380))
Plugin(frame)
frame.Show(True)
app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

给我错误:

Traceback (most recent call last):
  File "C:\.... ... ....\plugin.py", line 18, in onMouseOver …
Run Code Online (Sandbox Code Playgroud)

python wxwidgets wxpython panel

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

创建协作白板绘图应用程序

我有自己的绘图程序,有各种"绘图工具",如钢笔,橡皮擦,矩形,圆形,选择,文本等.

它是用Python和wxPython制作的.上面提到的每个工具都是一个类,它们都有多态方法,例如left_down(),mouse_motion(),hit_test()等.程序管理所有绘制形状的列表 - 当用户绘制形状时,它被添加到列表.这也用于管理撤消/重做操作.

所以,我有一个不错的代码库,我可以将协作绘图挂钩.可以更改每个形状以了解其所有者 - 绘制它的用户,并且仅允许对一个人拥有的形状执行删除/移动/重新缩放操作.

我只是想知道开发这个的最好方法."会话"中的一个人将不得不充当服务器,我没有钱提供免费的中央服务器.不知何故,用户需要一种连接服务器的方式,这意味着某种"发现服务器"浏览器......或其他东西.如何广播对应用程序所做的更改?实时绘制并在每个鼠标运动事件上​​广播消息在性能方面将是昂贵的,并且在给定时间用户越多,事情就越糟糕.

任何想法都是受欢迎的,我不太确定从哪里开始开发这个(甚至如何测试它)

python wxpython whiteboard twisted paint

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

wxPython:禁用笔记本标签?

无论如何禁用笔记本标签?就像你可以使用Widgets本身一样?我有一个漫长的过程,虽然对于那些看着它的人​​来说应该是非常明显的,但我希望能够防止用户在其他标签中乱窜,直到它运行的过程完成.

我似乎无法找到任何wx.Notebook帮助这个?

代码段:

def __init__(self, parent):
    wx.Notebook.__init__(self, parent, id=wx.ID_ANY, style=wx.BK_DEFAULT)

    self.AddPage(launchTab.LaunchPanel(self), "Launch")
    self.AddPage(scanTab.ScanPanel(self), "Scan")
    self.AddPage(extractTab.ExtractPanel(self), "Extract")
    self.AddPage(virtualsTab.VirtualsPanel(self), "Virtuals")
Run Code Online (Sandbox Code Playgroud)

python wxpython wxnotebook

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

wxpython捕获wx.Frame中的键盘事件

我正在尝试捕获在wx.Frame中发生的键盘事件,我希望以下代码能够捕获这些事件.但是,当我运行代码时,从不调用处理程序OnKeyDown:

import logging as log
import wx

class MainWindow(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(200,100))

        self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
        self.Bind(wx.EVT_KEY_UP, self.OnKeyDown)
        self.Bind(wx.EVT_CHAR, self.OnKeyDown)
        self.SetFocus()
        self.Show(True)

    def OnKeyDown(self, event=None):
        log.debug("OnKeyDown event %s" % (event))

if __name__ == "__main__":
    app = wx.App(False)
    gui = MainWindow(None, "test")
    app.MainLoop()
Run Code Online (Sandbox Code Playgroud)

如果有人知道如何做到这一点,我将不胜感激.

python wxwidgets wxpython

5
推荐指数
2
解决办法
6124
查看次数

在MAC 10.7或10.8上强制使用32位Python

我有MAC OS X 10.8,我已经使用Python的官方二进制文件将我的python更新到2.7.3版本.

我正在尝试运行需要使用32位python执行的python脚本.

我怎么能强制运行32位python而不是64位?

命令文件/ usr/bin/python为我提供了以下输出.

Alis-Mac:~ ali$ file /usr/bin/python
/usr/bin/python: Mach-O universal binary with 2 architectures
/usr/bin/python (for architecture i386):    Mach-O executable i386
/usr/bin/python (for architecture x86_64):  Mach-O 64-bit executable x86_64
Run Code Online (Sandbox Code Playgroud)

我也试过以下.

export VERSIONER_PYTHON_PREFER_32_BIT=yes
Run Code Online (Sandbox Code Playgroud)

但这甚至没有帮助,因为现在,我猜我有自定义python.

我的脚本中有wxpython代码,我正在使用platypus为OSX构建应用程序,所以,我必须强制我的脚本运行32位python.请帮忙.

python macos wxpython platypus

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

TypeError:由名称"id"和位置(2)给出的参数 - wxPython

我正在尝试使用Notebook类在wxPython中制作标签.使用上面链接的教程,我想出了以下代码:

#!/usr/bin/env python

import wx

class DeployTab(wx.Panel):
    def __init__(self, parent, *args, **kwargs):
        super(DeployTab, self).__init__(self, *args, parent=parent, id=wx.ID_ANY, **kwargs)

        self.sizer = wx.Panel(self)
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        deploy = wx.Button(
            self.main_panel, 
            label="test 1",
            size=(250, 100))
        self.sizer.Add(deploy, flag=wx.EXPAND|wx.ALL, border=5)

        self.SetSizer(self.sizer)

class ConfigTab(wx.Panel):
    # For now, copy.
    def __init__(self, parent, *args, **kwargs):
        super(ConfigTab, self).__init__(self, *args, parent=parent, id=wx.ID_ANY, **kwargs)

        self.sizer = wx.Panel(self)
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        deploy = wx.Button(
            self.main_panel, 
            label="test2",
            size=(250, 100))
        self.sizer.Add(deploy, flag=wx.EXPAND|wx.ALL, border=5)

        self.SetSizer(self.sizer)

class NotebookTabs(wx.Notebook):
    def __init__(self, parent):
        super(NotebookTabs, self).__init__(self, parent, …
Run Code Online (Sandbox Code Playgroud)

python wxpython python-2.7

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

任务栏的wxpython图标

我想在我的wxpython程序中设置一个图标.到目前为止,在阅读了许多页面和示例之后,我能够在窗口设置一个图标,这在使用alt + tab时也能正常工作(我在Windows 7上工作).

但任务栏上的图标是通常的python默认图标.

我不明白为什么这么简单的任务会有这么多麻烦.

这是我的代码:

class GraphFrame(wx.Frame):
    """ The main frame of the application
    """
    title = 'My first wxprogram'

    def __init__(self):
        wx.Frame.__init__(self, None, -1, self.title)

        ico = wx.Icon('dog.ico', wx.BITMAP_TYPE_ICO)
        self.SetIcon(ico)
        self.set_icon  

        self.create_menu()
        self.create_status_bar()
        self.create_main_panel()
        #...
Run Code Online (Sandbox Code Playgroud)

python icons wxpython

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

如何在单元测试中使用wxpython捕获线程事件?

我构建了一个运行后台线程的wx python应用程序来执行一些计算.但是,我目前的实现不允许进行单元测试.

我非常密切地基于本教程中的第一个示例实现了我的实现:http://wiki.wxpython.org/LongRunningTasks

下面的代码使用wx.PostEvent()frame.connect()向主框架注册结果事件,表明计算已完成.我还展示了一个单元测试代码片段.

但是,对于要捕获的线程结果事件,wx.App.MainLoop()必须启动.但是,我不知道如何在单元测试中模拟这种行为.

我对GUI单元测试的理解通常是手动模拟事件.但是在这种情况下,我想让我的后台线程运行.我应该修改实施吗?或者为了单元测试的目的,我可以通过其他方式存根计算线程吗?例如,我应该在单元测试代码中运行线程,然后一旦完成,调用GUI代码直接处理此事件?

import time
from threading import *
import unittest
import wx

# Button definitions
ID_START = wx.NewId()
ID_STOP = wx.NewId()

# Define notification event for thread completion
EVT_RESULT_ID = wx.NewId()

def EVT_RESULT(win, func):
    """Define Result Event."""
    win.Connect(-1, -1, EVT_RESULT_ID, func)

class ResultEvent(wx.PyEvent):
    """Simple event to carry arbitrary result data."""
    def __init__(self, data):
        """Init Result Event."""
        wx.PyEvent.__init__(self)
        self.SetEventType(EVT_RESULT_ID)
        self.data = data
        print "inside result event"

class WorkerThread(Thread): …
Run Code Online (Sandbox Code Playgroud)

python unit-testing wxpython

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

如何使用值和文本节点创建下拉列表 - WXPython

在HTML中,我可以创建如下的下拉菜单:

<select name="">
    <option value="">TextNode #1</option>
    <option value="">TextNode #2</option>
<select>
Run Code Online (Sandbox Code Playgroud)

现在我想在wxPython中有类似的东西.问题是我没有找到解决方案,因为它只允许我放置文本而不是值.

示例wxPython(创建下拉列表):

DropDownList = []
Options = {0:"None",1:"All",2:"WTF?!!"}
For Value, TextNode in Options:
    DropDownList.append( TextNode )

wx.ComboBox(panel,value="Select",choices=DropDownList)
Run Code Online (Sandbox Code Playgroud)

那么......我如何使用文本节点的增值?谢谢!

python wxwidgets wxpython drop-down-menu

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