当前位置: 首页 > 面试题库 >

在wxPython中绘制到面板内的面板

施誉
2023-03-14
问题内容

在下面,我在框架内部有一个面板。为什么我不能画图?我只是得到一个纯白色的屏幕。如果我摆脱了面板并直接绘制到框架上,那是可行的。任何帮助,将不胜感激。

import wx

class MyFrame(wx.Frame):
    def __init__(self):
        wx.Frame.__init__(self,None,-1,'window',(200,200),(600,600))
        self.Center()
        self.panel=wx.Panel(self)
        self.panel.SetBackgroundColour('white')
        self.firstpoint=wx.Point(300,300)
        self.secondpoint=wx.Point(400,400)
        self.Bind(wx.EVT_PAINT,self.onPaint)


    def onPaint(self,event):
        dc=wx.PaintDC(self.panel)
        dc.DrawLine(self.firstpoint.x,self.firstpoint.y,
                    self.secondpoint.x,self.secondpoint.y)

问题答案:

尝试将事件绑定到面板,而不是整个框架:

self.panel.Bind(wx.EVT_PAINT, self.onPaint)

您的版本对我来说很有效(Windows),但它会不断重新绘制面板,以致使整个处理器吃光了。

来自文档: 请注意,在绘画事件处理程序中,即使不使用它,应用程序也必须始终创建wxPaintDC对象。 否则,在MS
Windows下,为此窗口和其他窗口刷新将出错。

在这里,您收到了整个帧的绘画事件,但是将直流用于面板。

编辑:这http://wiki.wxpython.org/self.Bind%20vs.%20self.button.Bind很好地解释了为什么这行不通:

self.Bind(wx.EVT_PAINT, self.onPaint, self.panel)

在这种情况下,永远不会调用onPaint处理程序。



 类似资料:
  • 问题内容: 我有一个带有两个按钮的面板。我正在尝试在面板内插入图像,我想在单击按钮后在图像内画线。我使用了下面的代码,但这似乎不起作用。 最大的问题是我的其他班级使用的相同代码。 问题答案: 尝试在更新后包装内部。同样,当您完成对图形上下文的渲染时,还应该调用。 您还应该依靠布局管理器,而不是自己动手做,这只会使您的生活更轻松。 就个人而言,我认为将其直接绘制到自定义组件会更容易。查看执行自定义绘

  • 在我的wxpython程序中,面板的行为不同,这取决于我是将其作为派生类还是直接面板实例: 如果我按原样运行,它看起来很好。如果我运行它,注释掉创建panel1的四行,而不注释使用派生类创建panel1的行,则“some text”会被剪裁,只显示“sor”。当我制作一个非琐碎的程序时,更糟糕的事情就开始发生了。

  • 问题内容: 我正在编写一个具有许多不同视图的程序。其中之一是图形密集型(显示互连的图形)。其他人只显示较小但复杂的图表。 我发现主视图的绘制时间很长(甚至只是绘制当前可见的区域),并且在绘制时,界面的其余部分变得很慢。 我的问题是,我可以创建一个新线程来处理绘画吗?如果是这样,是否会导致性能提高,我怀疑它不会。我尝试了以下方法: 创建一个抽象类ThreadPaintablePanel,我的复杂视图

  • 我在想哪里出了问题。我以前做过这个,但由于某种原因,这次我不能让它工作。 我用Netbeans设计了这个项目。最相关的部分是initTiras方法,它被认为可以绘制一些东西,但它没有。我包含了NetBeans生成的代码。 这是代码的最简化版本,但它仍然没有绘制任何内容。 所以我在项目中创建了一个新的框架。然后我把一个JPanel放进去(在设计模式下)。JPanel称为ElPanel和JFrame

  • 我对Java不熟悉,所以我正在尝试一些事情。 我正在玩Java布局,特别是使用BorderLayout的嵌套面板。 我的问题是,我无法绘制嵌套面板。我可以画到主面板,但不能画嵌套在其中的面板。 如果你能告诉我哪里出了问题,我会非常高兴。 这是我的主要代码: 这是主面板。 然后创建两个嵌套面板,并将其添加到主面板中。 这里我称之为在屏幕上绘制形状的类。 这里是问题,因为我无法绘制嵌套面板的形状。 然

  • 我正在用OpenGL(更具体地说是lwjgl)制作一个GUI。我努力研究不同的方法来做到这一点,但我很难找到我想要的东西。我不想使用任何外部库(只有OpenGL内置的库,甚至试图远离使用过剩),我想让它在任何支持OpenGL的东西上工作(例如,帧缓冲区对象不能在旧的图形卡上工作)。