标签: wxpython

wxPython:异步执行命令,在文本小部件中显示stdout

我正在寻找与我对Tcl/Tk示例的答案相当的wxPython .具体来说,我想看一个如何创建几个按钮的示例,每个按钮在单击时都会运行一些外部命令.当进程正在运行时,我希望输出转到可滚动的wxPython小部件.

在进程运行时,GUI不应该阻塞.例如,假设其中一个按钮可以启动开发任务,例如构建或运行单元测试.

wxpython

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

如何在wx.Panel背景上做一个dregradê?

我想为wx.Panel的背景(SetBackgroundColour)着色,用蓝色到黑色的degradê.

我该怎么做?

python wxpython colors panel

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

如何在wxpython中的按钮文本中写一个"&"

这看起来很简单,但我没有找到任何文档.试过&&,哪个不起作用.想要一个这样的按钮:

Button1=wx.Button(self, 5, "abc&abc", (130, 230))
Run Code Online (Sandbox Code Playgroud)

python wxpython

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

在单独的线程中绘制图像缓冲区(MemoryDC)

我有:带有图像缓冲区的面板,其中使用Cairo绘制表单.缓冲区就像这里的例子一样实现:http://wiki.wxpython.org/BufferedCanvas

我想:一个线程,它在更新缓冲区时完成所有绘图(在创建/调整大小/缩放时)

问题:解决这个问题的好方法是什么?

我已经尝试在线程中进行绘图本身并得到一个断言错误,因为dc没有完成.我是否必须在线程中创建dc或在哪里?是否有一些关于线程和DC的教程?

编辑:

我尝试将示例与BufferedCanvas结合使用:LongRunningTasks

见这里:http://pastebin.com/X9kqSMKT

有时它会给出X Window系统错误,有时候效果很差

谢谢你的帮助

wxpython

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

使用wxglade创建的"自定义"对话框中的OK/CANCEL顺序

我注意到标准对话框在Windows和Linux下以不同的顺序显示了一些CANCEL和OK按钮.在Linux下,你会得到"[CANCEL] [OK]",在Windows下,"[OK] [CANCEL]".

我对标准对话框没有问题,但是我的"自定义对话框"必须调整以匹配相同的顺序,这取决于操作系统

我的疑惑:

1.-它似乎存在一个叫做的类wx.StdDialogButtonSizer,但我不确定它应该如何使用.有人可以发布任何工作简单/工作的例子吗?

而"主要问题":

2.-我使用wxglade来"构建"对话框的代码,所以我不确定我是否可以使用StdDialogBu​​ttonSizer.有没有办法用给定的顺序定义对话框,并在运行时检查按钮是否遵循正确的顺序并"交换"这两个小部件,如果没有?

谢谢

python wxpython wxglade

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

使用按钮wxpython更改面板

import wx
import wx.grid as gridlib

########################################################################
class PanelOne(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)
        txt = wx.TextCtrl(self)
        button =wx.Button(self, label="Save", pos=(200, 325))
        button.Bind(wx.EVT_BUTTON, self.onSwitchPanels)

########################################################################
class PanelTwo(wx.Panel):
    """"""

    #----------------------------------------------------------------------
    def __init__(self, parent):
        """Constructor"""
        wx.Panel.__init__(self, parent=parent)

        grid = gridlib.Grid(self)
        grid.CreateGrid(25,12)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(grid, 0, wx.EXPAND)
        self.SetSizer(sizer)

########################################################################
class MyForm(wx.Frame):

    #----------------------------------------------------------------------
    def __init__(self):
        wx.Frame.__init__(self, None, wx.ID_ANY,
                          "Panel Switcher Tutorial")

        self.panel_one = PanelOne(self)
        self.panel_two = PanelTwo(self)
        self.panel_two.Hide()

        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.panel_one, 1, wx.EXPAND)
        self.sizer.Add(self.panel_two, 1, wx.EXPAND)
        self.SetSizer(self.sizer)

        menubar = …
Run Code Online (Sandbox Code Playgroud)

python wxpython

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

wxPython非阻塞GUI线程和多处理?

Python 2.7.3 x64 wxPython 2.8 x64

已经阅读了很多关于python线程和多处理的内容,特别是Doug Hellmann撰写的一些文章,这些文章有很大的帮助.但是,我对一件事感到困惑......

认为 Python多处理模块或多或少是线程模块的直接替代品,除了args必须是可选择的,但我发现为了不阻止我的GUI,我必须首先创建一个新的线程使用threading.Thread然后使用multiprocessing.Process在该线程中进行多进程.这很有效,而且效果很好,但对我来说似乎有点笨拙.

如果我尝试在没有第一次线程的情况下直接进行多处理,那么我的GUI仍会阻塞,直到多处理作业完成.这是按设计工作,还是我遗漏了多处理模块的基本原理?

如果需要示例,我可以提供它们.

谢谢,

-RMWChaos

要求一个例子......

假设onProcess()由GUI中的按钮触发,这会阻止GUI ...

import time
import multiprocessing as mp

def myWorker(a, b):
    time.sleep(0.1)
    print '{} * {} = {}'.format(a, b, a*b)

def onProcess(event):
    jobs = mp.cpu_count() * 2
    a = 5
    b = 10

    for job in range(jobs):
        mp.Process(target = myWorker, args = (a, b,)).start()
Run Code Online (Sandbox Code Playgroud)

虽然这不......

import time
import multiprocessing as mp
import threading as th

def myWorker(a, b):
    time.sleep(0.1)
    print '{} * {} = …
Run Code Online (Sandbox Code Playgroud)

python multithreading wxpython nonblocking multiprocessing

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

如何用wxPython,PyQt,PySide或Tkinter解释Python?

我很好奇并且在过去一小时内一直在阅读使用Python进行GUI开发的内容.在阅读wxPython文档,PyQt,诺基亚Qt的Python绑定以及Tkinter之后,我想到了一个问题.

当我使用Python创建一个控制台应用程序时,它使用嵌入式Python解释器运行(我假设通常不是总是在我的情况下cpython).

所以我想知道,这些"小工具包"什么情况?

  • 如何执行Python代码以及解释它(或执行它)的代码?

  • 我的Python代码的哪一部分是使用Python解释器解释的?

  • 或者Python代码是否经过词法分析,然后由小部件的工具包解析,然后解释并执行(或在构建期间编译)?

我期待通过Python解释器与Python应用程序(稍微简单易懂)的解释相比较,了解后台发生的事情.

谢谢.

PS.无论哪个天才都认为这个问题值得关闭; 很多人都想知道外部库和系统的内部结构.特别是那些不像它们看起来那么简单的东西.目前在SE上没有任何问题可以解释这一点.

python user-interface wxpython tkinter pyside

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

如何在wxFrame上设置图标?

如何将图标(.ico文件)添加到wxFrame?

我正在查看文档,但找不到任何提及icon.

谢谢!

wxwidgets wxpython

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

AttributeError:“模块”对象没有属性“ SystemSettings_GetFont”

我尝试在下面运行此以下文件,但是没有用。通常必须显示使用库wxPython构建的图形用户界面。

import wx

class GoToClass(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size=(390, 350))
        panel = wx.Panel(self, -1)

    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, -1, 'Class Name')
    st1.SetFont(font)
    hbox1.Add(st1, 0, wx.RIGHT, 8)
    tc = wx.TextCtrl(panel, -1)
    hbox1.Add(tc, 1)
    vbox.Add(hbox1, 0, wx.EXPAND | wx.LEFT | wx.RIGHT | wx.TOP, 10)

    vbox.Add((-1, 10))

    hbox2 = wx.BoxSizer(wx.HORIZONTAL)
    st2 = wx.StaticText(panel, -1, 'Matching Classes')
    st2.SetFont(font)
    hbox2.Add(st2, 0)
    vbox.Add(hbox2, 0, wx.LEFT | wx.TOP, 10)

    vbox.Add((-1, 10))

    hbox3 …
Run Code Online (Sandbox Code Playgroud)

python user-interface wxpython

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