顏色

基本对象basic objects — 颜色colours

颜色是一个表示结合了不同强度值(intensity value)的红光(Red)、绿光(Green)以及蓝光(Blue)的对象. RGB 的有效值是 0-255 的整数值.
有三种方式来设置颜色. 我们可以创建一个 wx.Colour 对象,也可以使用一个预定义的颜色名字,还可以使用一个十六进制的字符串.[more…]

SetBackgroundColour(wx.Colour(0, 0, 255))
SetBackgroundColour('BLUE')
SetBackgroundColour('#0000FF')

WxPython中预定义的颜色名字有:

  • wx.BLACK
  • wx.WHITE
  • wx.RED
  • wx.BLUE
  • wx.GREEN
  • wx.CYAN
  • wx.LIGHT_GREY

标准颜色数据库:

  • AQUAMARINE
  • CORNFLOWER BLUE
  • DARK SLATE GREY
  • GREY
  • LIGHT STEEL BLUE
  • MEDIUM GOLDENROD
  • MIDNIGHT BLUE
  • PLUM
  • SLATE BLUE
  • VIOLET RED
  • BLACK
  • CYAN
  • DARK TURQUOISE
  • GREEN
  • LIME GREEN
  • MEDIUM ORCHID
  • NAVY
  • PURPLE
  • SPRING GREEN
  • WHEAT
  • BLUE
  • DARK GREY
  • DIM GREY
  • GREEN YELLOW
  • MAGENTA
  • MEDIUM SEA GREEN
  • ORANGE
  • RED
  • STEEL BLUE
  • WHITE
  • BLUE VIOLET
  • DARK GREEN
  • FIREBRICK
  • INDIAN RED
  • MAROON
  • MEDIUM SLATE BLUE
  • ORANGE RED
  • SALMON
  • TAN
  • YELLOW
  • BROWN
  • DARK OLIVE GREEN
  • FOREST GREEN
  • KHAKI
  • MEDIUM AQUAMARINE
  • MEDIUM SPRING GREEN
  • ORCHID
  • SEA GREEN
  • THISTLE
  • YELLOW GREEN
  • CADET BLUE
  • DARK ORCHID
  • GOLD
  • LIGHT BLUE
  • MEDIUM BLUE
  • MEDIUM TURQUOISE
  • PALE GREEN
  • SIENNA
  • TURQUOISE
  • CORAL
  • DARK SLATE BLUE
  • GOLDENROD
  • LIGHT GREY
  • MEDIUM FOREST GREEN
  • MEDIUM VIOLET RED
  • PINK
  • SKY BLUE
  • VIOLET

这个 colours.py 程序展示了 8 种不同的颜色. wx.BLACK 简单. 海洋蓝富有诗意. 而 #0000FF 则显得十分具有技术感. 选择何种颜色,取决于开发者本人.

#!/usr/bin/python
#coding=utf-8

#colours.py

import wx
class Colours(wx.Dialog):
    def __init__(self, parent, id, title):
        wx.Dialog.__init__(self, parent, id, title, size=(300, 300))
        vbox = wx.BoxSizer(wx.VERTICAL)
        self.pnl1 = wx.Panel(self, -1)
        self.pnl2 = wx.Panel(self, -1)
        self.pnl3 = wx.Panel(self, -1)
        self.pnl4 = wx.Panel(self, -1)
        self.pnl5 = wx.Panel(self, -1)
        self.pnl6 = wx.Panel(self, -1)
        self.pnl7 = wx.Panel(self, -1)
        self.pnl8 = wx.Panel(self, -1)

        gs = wx.GridSizer(
        gs.AddMany([
                    (self.pnl1, 0, wx.EXPAND),
                    (self.pnl2, 0, wx.EXPAND),
                    (self.pnl3, 0, wx.EXPAND),
                    (self.pnl4, 0, wx.EXPAND),
                    (self.pnl5, 0, wx.EXPAND),
                    (self.pnl6, 0, wx.EXPAND),
                    (self.pnl7, 0, wx.EXPAND),
                    (self.pnl8, 0, wx.EXPAND)
                    ])
        
        vbox.Add(gs, 1, wx.EXPAND | wx.TOP, 5)
        self.SetSizer(vbox)
        self.SetColors()
        self.Center()
        self.ShowModal()
        self.Destroy()
        
    def SetColors(self):
        self.pnl1.SetBackgroundColour(wx.BLACK)
        self.pnl2.SetBackgroundColour(wx.Color(139, 105, 20))
        self.pnl3.SetBackgroundColour(wx.RED)
        self.pnl4.SetBackgroundColour('#0000FF')
        self.pnl5.SetBackgroundColour('sea green')
        self.pnl6.SetBackgroundColour('midnight blue')
        self.pnl7.SetBackgroundColour(wx.LIGHT_GREY)
        self.pnl8.SetBackgroundColour('plum')
        
app = wx.App(0)
Colours(None, -1, 'colours.py')
app.MainLoop()
f-11

图:colours.py
完整的颜色数据库包含了大约 630 种不同的颜色名字. 该清单可在 colourdb.py 程序文件中找到.wxPython 的演示程序中也有展示. 下面的 randocolours.py 程序中有一个独立窗口. 我们将随机选择颜色来作为该窗口的背景颜色.

#!/usr/bin/python
#coding=utf-8

#randomcolours.py

import wx

from random import randrange
from wx.lib.colourdb import *

class MyFrame(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, wx.DefaultPosition, 									wx.Size(400, 350))
        
        self.panel = wx.Panel(self, -1)
        self.colors = getColourList()
        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.OnTimer, self.timer)
        self.timer.Start(500)
        self.col_num = len(self.colors)
        self.Center()
        
    def OnTimer(self, event):
        self.panel.SetBackgroundColour(wx.RED)
        position = randrange(0, self.col_num-1, 1)
        self.panel.SetBackgroundColour(self.colors[position])
        self.panel.Refresh()
        
class MyApp(wx.App):
    def OnInit(self):
        updateColourDB()
        frame = MyFrame(None, -1, 'randomcolours.py')
        frame.Show(True)
        self.SetTopWindow(frame)
        return True
    
app = MyApp(0)
app.MainLoop()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值