Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 6, 2007 13:38:43

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.ComboBox (wxPython)

Может кто сталкивался с такой проблемой? Не знаю как освежить выпадающий список ComboBox. Добавлять, добавляет без проблем cb.Append(“Значение”), а вот как новый список сформировать (не однократно) уже после создания объекта - не знаю. Пробовал удалять элементы - не получается, может они и удаляются, но в самой форме этого не видно. Пробовал выбранное значение убрать cb.SetValue(“”) - тоже визуально ничего не меняется. Подскажите кто знает как справиться с этим.



Офлайн

#2 Дек. 10, 2007 15:36:35

proDiva
От:
Зарегистрирован: 2007-02-15
Сообщения: 244
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.ComboBox (wxPython)

Я удаляла сам элемент и создавала снова с новым списком:
cb.Destroy()
cb = wxComboBox…



Офлайн

#3 Дек. 11, 2007 15:35:54

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.ComboBox (wxPython)

proDiva
Я удаляла сам элемент и создавала снова с новым списком:
cb.Destroy()
cb = wxComboBox…
Тоже это пробовал, но в форме элемент “прикручен” к wx.BoxSizer и создается в том месте, в “котором сам захочет”. Не получилось у меня пересоздать элемент, чтобы он корректно отображался.



Офлайн

#4 Дек. 12, 2007 10:51:43

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

wx.ComboBox (wxPython)

Хм… у меня нормально обновляется. Вы на какой платформе пробуете?

# -*- 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()



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#5 Дек. 12, 2007 18:00:21

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.ComboBox (wxPython)

PooH
Хм… у меня нормально обновляется. Вы на какой платформе пробуете?
Linux. Конечно есть отличия, но виджеты вроде одинаково должны работать.



Офлайн

#6 Дек. 13, 2007 05:43:16

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

wx.ComboBox (wxPython)

vak
Linux. Конечно есть отличия, но виджеты вроде одинаково должны работать.
Тогда, извиняйте, помочь не могу, сейчас под рукой нет машины с линуксом и Х-ами



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#7 Дек. 13, 2007 06:48:32

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.ComboBox (wxPython)

у меня код работает

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()



Офлайн

#8 Дек. 14, 2007 01:42:31

vak
От:
Зарегистрирован: 2007-05-04
Сообщения: 262
Репутация: +  0  -
Профиль   Отправить e-mail  

wx.ComboBox (wxPython)

pythonwin
у меня код работает

python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
on linux2
Спасибо, буду пробовать.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version