【问题标题】:wxPython panel SetBackgroundColour on button eventwxPython面板SetBackgroundColour按钮事件
【发布时间】:2015-02-03 00:21:26
【问题描述】:

我正在尝试向我用 wxpython 制作的计算器添加一个功能,我希望有一个按钮,单击该按钮时会更改背景颜色(面板)。为了向您展示我的代码,我制作了一个较小的程序,它只会改变颜色,即使在这个程序中,我也会得到相同的结果: 背景颜色没有改变,当我单击按钮时没有任何反应,我什至没有收到任何错误消息。实际上,计算器确实改变了颜色,但不是我想要的方式,它只会改变文本的颜色(一个 wx.StaticText),它并不是真的要这样做。 无论如何,这是代码:

import wx

class calc(wx.Frame):


    def __init__(self,parent,id):
        wx.Frame.__init__(self,parent,id,"Calculator",size=(400,400))
        global panel
        panel=wx.Panel(self)
        a=wx.Button(panel,label="GO",pos=(100,100),size=(50,50))
        self.Bind(wx.EVT_BUTTON, self.change, a)
    def change(self,event):
        panel.SetBackgroundColour("red")






if __name__=="__main__":
    app=wx.App(False)
    frame=calc(parent=None,id=-1)
    frame.Show()
    app.MainLoop()

当我运行它时,带有按钮的框架出现,当我点击按钮时,什么也没有发生!!有人知道这有什么问题吗? 谢谢指教!!!

【问题讨论】:

  • 此代码适用于 Xubuntu、wxPython 2.8.12 和 Python 2.7。您使用的是什么操作系统和 wxPython / Python 组合?
  • 使用 SetOwnBackgroundColour 仅更改面板的颜色,而不更改其子项的颜色。在 Windows 7 上为我设置颜色后需要 self.Refresh()
  • 我在windows上使用python 2.7,其实我还没有在ubuntu上试过,谢谢!!!
  • 无论如何全局都在那里,因为我在程序的其余部分中需要它,我错误地将它留在了我在这里发布的小程序中;)

标签: python colors wxpython panel


【解决方案1】:

虽然您的代码在 Xubuntu 14.04、wxPython 2.8.12 和 Python 2.7 上为我工作,但我继续稍微重写它以删除全局并稍微清理一下:

import wx

class calc(wx.Frame):

    def __init__(self):
        wx.Frame.__init__(self, None, title="Calculator", size=(400,400))
        self.panel = wx.Panel(self)

        a = wx.Button(self.panel, label="GO", pos=(100,100), size=(50,50))
        self.Bind(wx.EVT_BUTTON, self.change, a)

    def change(self,event):
        self.panel.SetBackgroundColour("red")
        self.Refresh()  # for windows

if __name__=="__main__":
    app = wx.App(False)
    frame = calc()
    frame.Show()
    app.MainLoop()

这也适用于我。

【讨论】:

  • 在 Windows 7 上为我设置颜色后需要一个 self.Refresh()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 2012-11-08
  • 1970-01-01
  • 2016-08-31
  • 2017-09-07
  • 1970-01-01
相关资源
最近更新 更多