vak
Дек. 6, 2007 13:38:43
Может кто сталкивался с такой проблемой? Не знаю как освежить выпадающий список ComboBox. Добавлять, добавляет без проблем cb.Append(“Значение”), а вот как новый список сформировать (не однократно) уже после создания объекта - не знаю. Пробовал удалять элементы - не получается, может они и удаляются, но в самой форме этого не видно. Пробовал выбранное значение убрать cb.SetValue(“”) - тоже визуально ничего не меняется. Подскажите кто знает как справиться с этим.
proDiva
Дек. 10, 2007 15:36:35
Я удаляла сам элемент и создавала снова с новым списком:
cb.Destroy()
cb = wxComboBox…
vak
Дек. 11, 2007 15:35:54
proDiva
Я удаляла сам элемент и создавала снова с новым списком:
cb.Destroy()
cb = wxComboBox…
Тоже это пробовал, но в форме элемент “прикручен” к wx.BoxSizer и создается в том месте, в “котором сам захочет”. Не получилось у меня пересоздать элемент, чтобы он корректно отображался.
PooH
Дек. 12, 2007 10:51:43
Хм… у меня нормально обновляется. Вы на какой платформе пробуете?
# -*- coding: cp1251 -*-
import wx
list1 = (u'один',u'два',u'три',u'четыре',u'пять')
list2 = (u'январь',u'февраль',u'март',u'апрель')
class TestFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "Test", size=(500, 400))
self.cb = wx.ComboBox(self, 500, "default value", (90, 50), (95, -1),
list1, wx.CB_DROPDOWN)
self.ls = list1
b = wx.Button(self, 10, u"Поменять", (20, 20))
self.Bind(wx.EVT_BUTTON, self.OnClick, b)
box = wx.BoxSizer(wx.VERTICAL)
box.Add(self.cb, 0, wx.EXPAND)
box.Add(b, 0, wx.EXPAND)
self.SetSizer(box)
def OnClick(self, event):
def set_list(ls):
self.cb.Clear()
for x in ls:
self.cb.Append(x)
if self.ls == list1:
self.ls = list2
else:
self.ls = list1
set_list(self.ls)
if __name__ == '__main__':
app = wx.PySimpleApp()
frame = TestFrame(None)
frame.Show(True)
app.MainLoop()
vak
Дек. 12, 2007 18:00:21
PooH
Хм… у меня нормально обновляется. Вы на какой платформе пробуете?
Linux. Конечно есть отличия, но виджеты вроде одинаково должны работать.
PooH
Дек. 13, 2007 05:43:16
vak
Linux. Конечно есть отличия, но виджеты вроде одинаково должны работать.
Тогда, извиняйте, помочь не могу, сейчас под рукой нет машины с линуксом и Х-ами
pythonwin
Дек. 13, 2007 06:48:32
у меня код работает
python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
on linux2
# -*- coding: utf-8 -*-
import wx
list1 = (u'один',u'два',u'три',u'четыре',u'пять')
list2 = (u'январь',u'февраль',u'март',u'апрель')
class TestFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, “Test”, size=(500, 400))
self.cb = wx.ComboBox(self, 500, “default value”, (90, 50), (95, -1),
list1, wx.CB_DROPDOWN)
self.ls = list1
b = wx.Button(self, 10, u“Поменять”, (20, 20))
self.Bind(wx.EVT_BUTTON, self.OnClick, b)
box = wx.BoxSizer(wx.VERTICAL)
box.Add(self.cb, 0, wx.EXPAND)
box.Add(b, 0, wx.EXPAND)
self.SetSizer(box)
def OnClick(self, event):
def set_list(ls):
self.cb.Clear()
for x in ls:
self.cb.Append(x)
if self.ls == list1:
self.ls = list2
else:
self.ls = list1
set_list(self.ls)
if __name__ == ‘__main__’:
app = wx.PySimpleApp()
frame = TestFrame(None)
frame.Show(True)
app.MainLoop()