很抱歉让这个含糊不清但我正在编写一个python代码,其中列表中的值被附加到wx.Choice
框。在这些值中有一些正确的和不正确的,我已经区分了哪些值是正确的,哪些不在我的代码中。我想通过将它们设置为红色来显示wx.Choice
中的这些值是不正确的。我知道有SetForegroundColour
这样的选项,但我没有找到在wx.Choice
内完成此操作的充分方法,任何人都知道我该如何做到这一点?
谢谢!
答案 0 :(得分:0)
正如您从评论中了解到的那样,您尝试做的事情似乎并不是一个简单的选择。但是,您可以使用combotreebox
并将有效和无效选项放在树的2个不同分支中。
import wx
from wx.lib.combotreebox import ComboTreeBox
class Myframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
pan = wx.Panel(self)
valid_list = ["1111","22222","33333","44444"]
invalid_list = ["5555","6666","77777","88888"]
self.combo = ComboTreeBox(pan)
Valid = self.combo.Append('Valid Choices') # Add a root item
for i in valid_list:
self.combo.Append(i, parent=Valid) # Add childen to Valid Choices
InValid = self.combo.Append('InValid Choices') # Add a root item
for i in invalid_list:
self.combo.Append(i, parent=InValid) # Add childen to InValid Choices
self.combo.SetSelection(Valid)
self.combo.Bind(wx.EVT_COMBOBOX, self.OnCombo)
def OnCombo(self, event):
print (self.combo.GetStringSelection())
if __name__ == "__main__":
App = wx.App()
Myframe().Show()
App.MainLoop()
答案 1 :(得分:0)
还有另一个选项,您可以根据自己的喜好找到更多选项,BitmapComboBox
,这是一个组合框,在列表中的项目前显示位图。
import wx
from wx.adv import BitmapComboBox # Phoenix
#import wx.combo # wxpython Classic
class Myframe(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None)
pan = wx.Panel(self)
valid_list = ["1111","22222","33333","44444"]
invalid_list = ["5555","6666","77777","88888"]
image = wx.Image("vvalid.png")
valid_bmp = wx.BitmapFromImage(image)
image = wx.Image("vinvalid.png")
invalid_bmp = wx.BitmapFromImage(image)
self.combo = BitmapComboBox(pan) # Phoenix
#self.combo = wx.combo.BitmapComboBox(pan) #wxpython Classic
for i in valid_list:
self.combo.Append(i, bitmap=valid_bmp)
for i in invalid_list:
self.combo.Append(i, bitmap=invalid_bmp)
self.combo.SetSelection(0)
self.combo.Bind(wx.EVT_COMBOBOX, self.OnCombo)
def OnCombo(self, event):
print (self.combo.GetStringSelection())
if __name__ == "__main__":
App = wx.App()
Myframe().Show()
App.MainLoop()
我已经包含了Phoenix和Classic wx的代码,虽然使用Phoenix,你应该用wx.BitmapFromImage
取代wx.Bitmap
,它现在可以让你使用旧表格。