Найти - Пользователи
Полная версия: сделать всё в одном цикле
Начало » GUI » сделать всё в одном цикле
1
Voroshek
Делаю окна в tkinter с иконками. Всего иконок 29. Для этого мне потребуется 29 раз написать:
img = PhotoImage(file='image/имя_файла.gif')
подставляя имя переменной и имя изображения. Возможно ли заставить цикл делать эту работу? то есть назначать переменным имена img1 - img28 и подставлять имена изображения.
На попытку указать:
a = 'image' + x + '.gif'
PhotoImage(file='a')
где х - имя изображения, отвечает, что создать изображение слишком тяжело
Спасибо
МИша
Вспомните про функцию map
map(function, iterable, …)
Apply function to every item of iterable and return a list of the results. If additional iterable arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. If one iterable is shorter than another it is assumed to be extended with None items. If function is None, the identity function is assumed; if there are multiple arguments, map() returns a list consisting of tuples containing the corresponding items from all iterables (a kind of transpose operation). The iterable arguments may be a sequence or any iterable object; the result is always a list.

Что-то наподобие этого получится:
# в переменную file загоните список из строк, где каждая строка нужный адрес
img = map(PhotoImage, file)
# или
a = map(lambda x : 'image' + x + '.gif', x) # x - список из имен изображений
map(PhotoImage, a)
Voroshek
Благодарю, просто про неё не знал.
* * *
К сожалению, не работает: объект map не “subscriptable” (это слово не перевёл ни гугл, ни стардикт). Сделал всё через for in range, получилось норм.
А знает кто-нибудь инфу про menubutton?
МИша
Voroshek
объект map не “subscriptable” (это слово не перевёл ни гугл, ни стардикт).
Это переводится как неиндексируемый.
Скорее всего вы что-то не так написали) Ну не беда, получилось с циклом и ладно
А что конкретно вас интересует про menubutton? Да и что это впринципе?)
pyuser
для python 3.x видимо нужно писать
list(map(...))
(c версии 3.0 map возвращает итератор)
Voroshek
pyuser спасибо, при случае попробую.
МИша видите какое дело. Хотел оформить ввод данных в виде выпадающего списка, но то, как это реализовано в Menu, не очень порадовало. Увидел ссылку на menubutton, но в описаниях, даже на аглицком, про неё no data, вот и спросил, мож кто знает
Griffon
Вы вводите в заблуждение себя и других, на английском достаточно информации о menubutton.
Наверное надо вверху ветки GUI прикрепить тему с основными доками, надоело уже повторять - “Tkinter GUI for Python”.
Но вам не надо изобретать велосипед, велосипедисты уже побеспокоились об этом за вас, что означает: используйте ttk.Сombobox.
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