Найти - Пользователи
Полная версия: wx.ComboBox (wxPython)
Начало » GUI » wx.ComboBox (wxPython)
1
vak
Может кто сталкивался с такой проблемой? Не знаю как освежить выпадающий список ComboBox. Добавлять, добавляет без проблем cb.Append(“Значение”), а вот как новый список сформировать (не однократно) уже после создания объекта - не знаю. Пробовал удалять элементы - не получается, может они и удаляются, но в самой форме этого не видно. Пробовал выбранное значение убрать cb.SetValue(“”) - тоже визуально ничего не меняется. Подскажите кто знает как справиться с этим.
proDiva
Я удаляла сам элемент и создавала снова с новым списком:
cb.Destroy()
cb = wxComboBox…
vak
proDiva
Я удаляла сам элемент и создавала снова с новым списком:
cb.Destroy()
cb = wxComboBox…
Тоже это пробовал, но в форме элемент “прикручен” к wx.BoxSizer и создается в том месте, в “котором сам захочет”. Не получилось у меня пересоздать элемент, чтобы он корректно отображался.
PooH
Хм… у меня нормально обновляется. Вы на какой платформе пробуете?

# -*- 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
PooH
Хм… у меня нормально обновляется. Вы на какой платформе пробуете?
Linux. Конечно есть отличия, но виджеты вроде одинаково должны работать.
PooH
vak
Linux. Конечно есть отличия, но виджеты вроде одинаково должны работать.
Тогда, извиняйте, помочь не могу, сейчас под рукой нет машины с линуксом и Х-ами
pythonwin
у меня код работает

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()
vak
pythonwin
у меня код работает

python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
on linux2
Спасибо, буду пробовать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB