标签: wxpython

使用wxpython进行双缓冲

我正在使用wxpython处理多平台应用程序,并且在绘制Panel时我在Windows上出现了闪烁问题.我曾经在鼠标运动事件中绘制缓冲区(wx.Bitmap),而我的OnPaint方法只是在线组成:

dc = wx.BufferedPaintDC(self, self.buffer)
Run Code Online (Sandbox Code Playgroud)

相当标准,但我仍然在Windows上有闪烁的问题,而一切都在Linux上运行良好.

解决我的问题调用SetDoubleBuffered(True)__init__方法.

奇怪的是,即使我不再使用BufferedPaintDC,现在一切正常.我更改了我的应用程序,以便所有绘图部分都在OnPaint方法中完成.我不使用缓冲区,直接在wx.PaintDC上完成绘图,完全没有闪烁问题.

所以我的问题是:BufferedPaintDC完全没用吗?或者以某种方式弃用?我是"WxPython in Action"(2006)一书的所有者,它甚至没有提到SetDoubleBuffered

python user-interface wxpython doublebuffered

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

wxPython:BoxSizer中的项目不会水平扩展,只能垂直扩展

我在各种大小调整器中有几个按钮,它们以我想要的方式扩展.但是,当我将父项添加到用于在框架中的所有元素周围添加边框的新wx.BoxSizer时,已添加的sizer在垂直方向上正确运行,但不能水平运行.

以下代码演示了此问题:

#! /usr/bin/env python

import wx
import webbrowser

class App(wx.App):


    def OnInit(self):
       frame = MainFrame()
       frame.Show()
       self.SetTopWindow(frame)
       return True


class MainFrame(wx.Frame):

    title = 'Title'


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

        panel = wx.Panel(self)

        #icon = wx.Icon('icon.png', wx.BITMAP_TYPE_PNG)
        #self.SetIcon(icon)

        sizer = wx.FlexGridSizer(rows=2, cols=1, vgap=10, hgap=10)

        button1 = wx.Button(panel, -1, 'BUTTON')
        sizer.Add(button1, 0, wx.EXPAND)

        buttonSizer = wx.FlexGridSizer(rows=1, cols=4, vgap=10, hgap=5)

        buttonDelete = wx.Button(panel, -1, 'Delete')
        buttonSizer.Add(buttonDelete, 0, 0)

        buttonEdit = wx.Button(panel, -1, 'Edit')
        buttonSizer.Add(buttonEdit, 0, 0)

        buttonNew = wx.Button(panel, -1, 'New') …
Run Code Online (Sandbox Code Playgroud)

python wxwidgets wxpython

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

从TextCtrl框中获取字符串

如何从TextCtrl盒子里拿出琴弦?这是练习代码:

import wx



class citPanel(wx.Panel):
    def __init__(self, parent, id):
        wx.Panel.__init__(self, parent, id)


        wx.StaticText(self, -1, "Choose put you would like:", (45, 15))

        self.quote = wx.StaticText(self, -1, "1:", wx.Point(275, 180), wx.Size(200, -1))
        self.quote = wx.StaticText(self, -1, "2:", wx.Point(275, 230), wx.Size(200, -1))
        self.quote = wx.StaticText(self, -1, "3:", wx.Point(275, 280), wx.Size(200, -1))




class nextButton(wx.Button):
    def __init__(self, parent, id, label, pos):
        wx.Button.__init__(self, parent, id, label, pos)

class cancelButton(wx.Button):
    def __init__(self, parent, id, label, pos):
        wx.Button.__init__(self, parent, id, label, pos)

class searchBox(wx.TextCtrl):
def __init__(self, …
Run Code Online (Sandbox Code Playgroud)

python wxpython textctrl

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

在wx.Panel上的点击事件?

如何点击wx.Panel并更改其颜色?这个活动的名称是什么.

(我想做与Firefox Extras类似的事情)

提前致谢!:)

python wxpython panel

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

如何获取字符串的宽度(以像素为单位)?

我正在使用wxPython的HyperTreeList,我想将列宽设置为完全等于其中最大字符串的长度.

为了实现这一点,我想将python字符串大小转换为像素.

例如:如果我们有一个字符串

str = "python"
len(str) = 6
Run Code Online (Sandbox Code Playgroud)

我怎么能将上面的字符串长度/大小转换为像素?

还有另外一种方法吗?

python wxpython

10
推荐指数
2
解决办法
9552
查看次数

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

更改wxPython TextCtrl小部件上的字体

我想将wx.TextCtrl小部件的字体设置为Consolas,或者至少是另一种等宽字体.我该怎么做?

python fonts wxpython textctrl

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

wxPython禁用帧大小调整

如何禁用用户调整大小的wxFrame?如果在创建框架时有一个标记,那么它是什么?

wxpython resize frame

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

在GUI中处理未处理的异常

我主要是为精通技术的人编写一个小工具,例如程序员,工程师等.由于这些工具通常会随着时间的推移而快速改进,我知道会有未处理的异常并且用户不会介意.我希望用户能够向我发送回溯,以便我可以检查发生了什么并可能改进应用程序.

我经常做wxPython编程,但最近我做了一些Java.我已经TaskDialog上课了Thread.UncaughtExceptionHandler(),我对结果非常满意.特别是它可以捕获和处理来自任何线程的异常:

在此输入图像描述

在此输入图像描述

我在wxPython中做了类似的事情很长一段时间.然而:

  1. 我不得不写一个装饰器 - 黑客,以便能够很好地打印来自另一个线程的异常.
  2. 即使功能正常,结果也很难看.

在此输入图像描述

这是Java和wxPython的代码,所以你可以看到我做了什么:

Java的:

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.JButton;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import com.ezware.dialog.task.TaskDialogs;

public class SwingExceptionTest {

    private JFrame frame;

    public static void main(String[] args) {

        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch (ClassNotFoundException e) {
        }
        catch (InstantiationException e) {
        }
        catch (IllegalAccessException e) {
        }
        catch (UnsupportedLookAndFeelException e) {
        }

        Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
            public void uncaughtException(Thread t, Throwable e) { …
Run Code Online (Sandbox Code Playgroud)

python java swing wxpython exception

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

使用Python GUI与C++后台模块的混合应用程序

我想编写一个混合应用程序,它使用python作为GUI组件,C++模块作为后台服务.

我知道如何使用Python和C++编程,但我找不到一种成熟/好的方法来使它们顺利地协同工作.你能为我们解释一下吗?一个好的文档/教程也非常感谢.

c++ python boost wxpython

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