Найти - Пользователи
Полная версия: Стринг не стринг
Начало » Python для новичков » Стринг не стринг
1
Lestoroer
Посоны хелп. 2 часа просидел опять решить не могу. Видел помню где-то раньше, что можно сделать то, что я щас расскажу. В общем :
имеется список
h = [self.vbox, self.vbox_basic]
Берем и перебираем циклом фор этот список :
for i in h:
      print(h[i])
Однако :
print(h[i])
Выдает :
<PySide.QtGui.QVBoxLayout object at 0x0000000003AEC248>, а надо : self.vbox, self.vbox_basic
Раньше видел где-то, как можно преобразовать этот код в self.vbox вот потерял, кто знает?
P.S. изменение списка вот таким образом
h = ['self.vbox', 'self.vbox_basic']
не предлагать
ayb
Определи методы __str__ у этих обьектов.
py.user.next
Пример
Пример
Lestoroer
это я привел так для примера.
print(i)
На самом деле мне не надо вызывать print(i) вообще, я его привел для того, чтобы не пугать синтаксисом людей. Вот реальный код, который должен заработать.
    def hide (self):
        h = [self.vbox, self.vbox_basic]
        for i in h:
            self.grid.removeItem(i)
Имеется список h, который содержит в себе self.vbox и self.vbox_basic, мы берем пробегаем по списку с помощью цикла for и вставляем его элементы в self.grid.removeItem(i) (этот метод удаляет объекты из сетки PyQt).
В итоге, когда проходит цикл, у меня получается такое self.grid.removeItem(object at 0x0000000003AEC248) и, естественно, код не срабатывает, а он должен вставлять self.grid.removeItem(self.vbox) и потом self.grid.removeItem(self.vbox_basic) и удалять эти объекты из сетки.
Мне посоветовали __Str__, но я так понял, этот метод преобразует в строку и потом вставляется строка, однако, выходит ошибка, что мол ты используешь тип данных ‘str’.
FishHook
Lestoroer
у меня получается такое self.grid.removeItem(object at 0x0000000003AEC248)
С чего вы это взяли?
если ваш реальный код такой же как вы нам показали, то всё туда будет нормально подставляться.
py.user.next
Lestoroer
Мне посоветовали __Str__
Но это неправильный совет. В классе QGridLayout в метод removeItem() (унаследованный от QLayout) подаётся объект класса QLayoutItem. При этом QLayout наследуется от QLayoutItem. Поэтому подавать надо сами объекты, которые были добавлены в QGridLayout через метод addLayout().
Lestoroer
py.user.next
Их и добавляю.
FishHook
Я тоже так считаю, однако, не работает у меня в PySide. Код просто берет и вылетает “прекращена работа”. Вы натолкнули меня на мысль и я перевел весь код в -> PyQt, все стало работать. Видимо что-то с PySide.
Благодарю всех.
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