You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

wxPython开发疑问:运行应用未显示两个不同颜色Panel,求原因

wxPython双Panel颜色不显示问题排查与解决

嘿,我来帮你搞定这个wxPython的Panel显示问题~你说运行应用后看不到两个不同颜色的Panel,我看了你的代码,发现几个关键问题,咱们一步步来解决:

问题分析

你的代码里存在几个明显的问题,导致颜色效果没出来:

  • 语法错误:Panel1的__init__方法里,super调用的参数写成了**kwar...,这是不完整的语法,应该是**kwargs,不然代码直接报错跑不起来。
  • 未设置背景颜色:你定义的Panel1和Panel2只是继承了wx.Panel,但没有设置任何背景色属性,默认会和父窗口颜色一致,自然看不出区别。
  • Panel2类未定义:你只给出了Panel1的部分代码,完全没有Panel2的定义,这也会导致运行出错。

修正后的完整代码

import wx

class Frame(wx.Frame):
    def __init__(self, *args, **kwargs):
        super(Frame, self).__init__(*args, **kwargs)
        self.Center()
        # 把Panel设为实例属性,避免被垃圾回收(虽然局部变量也可能生效,但更稳妥)
        self.panel1 = Panel1(self, -1, size=(200,200), pos=(0,0))
        self.panel2 = Panel2(self, -1, size=(200,200), pos=(210,0))
        self.Show()

class Panel1(wx.Panel):
    def __init__(self, *args, **kwargs):
        super(Panel1,self).__init__(*args, **kwargs)
        # 设置Panel1的背景色为红色
        self.SetBackgroundColour(wx.RED)

class Panel2(wx.Panel):
    def __init__(self, *args, **kwargs):
        super(Panel2,self).__init__(*args, **kwargs)
        # 设置Panel2的背景色为蓝色
        self.SetBackgroundColour(wx.BLUE)

if __name__ == "__main__":
    app = wx.App()
    Frame(None, title="双Panel示例", size=(450, 250))
    app.MainLoop()

关键修改说明

  1. 修正了Panel1里的语法错误,把**kwar...改成了正确的**kwargs。
  2. 给Panel1和Panel2分别添加了SetBackgroundColour方法,设置了不同的颜色(红色和蓝色),这样就能明显区分两个Panel了。
  3. 补充了Panel2的完整类定义,确保代码能正常运行。
  4. 把Frame里的panel1和panel2改成了实例属性(self.panel1、self.panel2),避免局部变量被Python垃圾回收机制回收导致Panel不显示。

运行这段修正后的代码,你就能看到窗口里左右两个不同颜色的Panel啦~

内容的提问来源于stack exchange,提问作者tommy45

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:27:12