對不起,使這個模糊,但我正在寫一個Python代碼,其中列表中的值被附加到一個wx.Choice
框。在這些值中有一些正確的和不正確的,我已經區分了哪些值是正確的,哪些不在我的代碼中。我想在wx.Choice
中顯示這些值不正確,因爲它們是紅色的。我知道有這樣的選項,如SetForegroundColour
,但是我還沒有找到一個合適的方法在wx.Choice
之內完成此任務,任何人都有任何想法我可以做到這一點?在wx.Choice中更改列表中特定值的顏色
謝謝!
對不起,使這個模糊,但我正在寫一個Python代碼,其中列表中的值被附加到一個wx.Choice
框。在這些值中有一些正確的和不正確的,我已經區分了哪些值是正確的,哪些不在我的代碼中。我想在wx.Choice
中顯示這些值不正確,因爲它們是紅色的。我知道有這樣的選項,如SetForegroundColour
,但是我還沒有找到一個合適的方法在wx.Choice
之內完成此任務,任何人都有任何想法我可以做到這一點?在wx.Choice中更改列表中特定值的顏色
謝謝!
還有另一種選擇,你可能發現更多的根據自己的喜好,一個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()
我已經包含了兩個菲尼克斯和經典WX代碼,雖然使用鳳凰,你應該只wx.Bitmap
取代wx.BitmapFromImage
,但它目前讓你擺脫舊的形式。
這是一個非常好的解決方案!我不知道你可以在組合框中使用位圖!謝謝! – steradian
正如您從評論中知道的那樣,您嘗試做的事似乎並不是一個簡單的選擇。但是,您可以使用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()
我相信不可能在wx.Choice中訪問單個項目的屬性。 – prgDevelop
我認爲你是在小部件本身的膽量下降。一旦做出選擇,你總是可以選擇顏色,雖然這可能不是你以前的樣子。這確實會問這個問題,如果它們無效,爲什麼會包含錯誤的選擇? –