Python: Tkinter не отображает мой образ или интерфейс -- python поле с участием image поле с участием tkinter пол Связанный проблема

Python: Tkinter not displaying my image or UI


1
vote

проблема

русский

Я пытаюсь создать пользовательский интерфейс с изображением в правом верхнем углу. Вот мой код:

 <код> import tkinter as tk import urllib.request import base64 as b64  class my_ui(tk.Tk):     def __init__(self, parent):         tk.Tk.__init__(self,parent)         self.parent=parent         self.intialize()      def intialize(self):         self.grid()          #Welcome         label = tk.Label(self,text="Welcome to my UI", anchor='center',fg='white',bg='blue')         label.grid(column=0,row=0,columnspan=2,rowspan=2,sticky='EW')          #Buttons         button = tk.Button(self,text="Button 1",command=self.OnButtonClick)         button.grid(column=0,row=3,sticky='W')      def OnButtonClick(self):         print("You clicked the button!")  if __name__ == "__main__":     app = my_ui(None)      #Logo URL - just a smiley face     URL = "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQCItlNQe0QaiuhkADUwgVTpx-Isaym6RAP06PHkzBe2Yza3a4rYIkHuB8"     u = urllib.request.urlopen(URL)     raw_data = u.read()     u.close()     b64_data = b64.encodestring(raw_data)     photo = tk.PhotoImage(data=b64_data)      logo = tk.Label(app, image=photo)     logo.image = photo                  # To save it in memory     logo.pack()                         # If I exclude this line, UI works fine.     app.title('My User Interface')     app.mainloop()   

Я потянул .gif из Интернета и возвращая фотомажью с моей функцией. Когда я бегу этим, я не получаю ошибок - скорее, мое окно Tkinter не выглядит вообще. Когда я вынимаю линию, я упомянул в комментарии, мой интерфейс подходит хорошо (кнопки, но нет изображения) без ошибок.

Я не уверен, что именно отсутствие окна означает. Я бегу Python 3.4.1 на Mac OSX. Любая помощь была бы очень ценится!

Английский оригинал

I am trying to create a user interface with a picture in its top right corner. Here is my code:

import tkinter as tk import urllib.request import base64 as b64  class my_ui(tk.Tk):     def __init__(self, parent):         tk.Tk.__init__(self,parent)         self.parent=parent         self.intialize()      def intialize(self):         self.grid()          #Welcome         label = tk.Label(self,text="Welcome to my UI", anchor='center',fg='white',bg='blue')         label.grid(column=0,row=0,columnspan=2,rowspan=2,sticky='EW')          #Buttons         button = tk.Button(self,text="Button 1",command=self.OnButtonClick)         button.grid(column=0,row=3,sticky='W')      def OnButtonClick(self):         print("You clicked the button!")  if __name__ == "__main__":     app = my_ui(None)      #Logo URL - just a smiley face     URL = "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQCItlNQe0QaiuhkADUwgVTpx-Isaym6RAP06PHkzBe2Yza3a4rYIkHuB8"     u = urllib.request.urlopen(URL)     raw_data = u.read()     u.close()     b64_data = b64.encodestring(raw_data)     photo = tk.PhotoImage(data=b64_data)      logo = tk.Label(app, image=photo)     logo.image = photo                  # To save it in memory     logo.pack()                         # If I exclude this line, UI works fine.     app.title('My User Interface')     app.mainloop() 

I am pulling a .gif from the web and returning a PhotoImage with my function. When I run this, I get no errors - rather, my tkinter window does not appear whatsoever. When I take out the line I mentioned in the comment, my UI comes up fine (buttons, but no image) with no errors.

I am unsure of what exactly the absence of the window means. I am running Python 3.4.1 on Mac OSx. Any help would be greatly appreciated!

</div
        
       
       

Список ответов

0
 
vote

Когда tk.PhotoImage объект получает сборщик мусора, изображение "выпущено", так сказать. Изображение все еще технически используется, поэтому он не разрушен, но он полностью отключен. Замените ваш <код> return LINE с:

 <код> photo = tk.PhotoImage(data=b64_data) return photo   

Обязательно обязательно объявите <код> getActionBar()0 как глобальная переменная.

 

When a tk.PhotoImage object gets garbage collected, the image is "released", so to speak. The image is still technically being used, so it's not destroyed, but it will get completely blanked out. Replace your return line with:

photo = tk.PhotoImage(data=b64_data) return photo 

Just be sure to declare photo as a global variable.

</div
 
 
 
 

Связанный проблема

0  Как добавить номер в каждом базовом случае рекурсии? (Python3)?  ( How to add number in each base case of recursionpython3 ) 
Я хочу добавить 1 на <код> ans После того, как рекурсионная ветка достигает того, где <код> n==0 но не удается. Я пытался присвоить <код> ans сначала и д...

2  Spotipy Authentication не возвращает токен?  ( Spotipy authentication not returning token ) 
Все подходящие люди, я прочитал всю документацию, которую я могу найти в методах аутентификации Spotipy, и я собрал небольшой кусок кода, чтобы проверить его,...

5  Экспорт SVG в PDF в автономном TideSDK WebApp  ( Exporting svg to pdf in a offline tidesdk webapp ) 
У меня есть приложение Offline HTML5 / CSS / JS, построенное с TIDESDK, в котором гистограмма нарисована с HighCharts в качестве SVG «Tag», используя данные, ...

1  Используйте файл в качестве аргумента для функции, которая подсчитывает, создает счет для каждой буквы в текстовом файле  ( Use a file as an argument for a function that counts creates a count for each le ) 
Моя программа прямо сейчас работает только для первого символа в текстовом файле и итерации бесконечно. Например, если первая буква в текстовом файле D, прогр...

15  Пип не работает  ( Pip not working ) 
Я пытаюсь установить Python-Shavely с Pip в Ubuntu 10.04. Я получил «неизвестную или неподдерживаемую команду» «Установить», пока я попробовал, <Код> Allian...

0  Групповые пакеты на сервере трафика  ( Timing packets on a traffic server ) 
У меня есть прокси-сервер трафика, который является дополнительным ходом на сеть и обрабатывает большое количество трафика. Я хотел бы рассчитать стоимость ...

3  Как заменить символ в строке с символом не ASCII в Python?  ( How to replace a character in a string with a non ascii character in python ) 
Я хочу заменить знак номера (#) символом, аналогичным тому, что называется резким знаком музыки (♯). Я попробовал следующую линию, но не работал. <код> res[...

0  Как нарисовать случайный треугольник и его медиану? [закрыто]  ( How to draw a random triangle and its median ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> закрыто. Этот вопрос нуждается в Детали отладки . В настоящее вр...

0  Jupyter-Notebook не работает после команды Jupyter-Notebook  ( Jupyter notebook is not working after jupyter notebook command ) 
Я устанавливаю Jupyter-ноутбук для работы с проектами, связанными с наукой на науке. Я не могу установить его должным образом или есть некоторая проблема с со...

2  Pyproj Пакет Установка Proj_dir Переменная  ( Pyproj package installation proj dir variable ) 
Я пытаюсь установить <код> pyproj , хотя получаю <код> Proj executable not found. Please set PROJ_DIR variable ошибки. Команда <Код> $ pipenv install pyp...

0  Использование Pybind11 на MacBook Pro  ( Using pybind11 on macbook pro ) 
Я пытаюсь использовать Pybind11 на MacBook, и я пытаюсь сделать так, как было написано в https://pybind11.readtheDocs.io/en/stable/basics.html я установил C...

0  Ubuntu Supervisor Импорт модулей Python модулей  ( Ubuntu supervisor import python modules error ) 
Я использую супервизор для запуска Websocket Django в системе запуска. Когда я запускаю руководитель, он будет поднять ModulenotfoundError: Нет модуля с ...

48  Ошибка auth_user с django 1.8 и syncdb / migrate  ( Auth user error with django 1 8 and syncdb migrate ) 
При обновлении в Django 1.8 (с zc.buildout) и запуском SyncDB или миграция, я получаю это сообщение: <Код> django.db.utils.ProgrammingError: relation "auth_...

3  Compile United с кодом ошибки 1 в / tmp / pip_build_root / uwsgi  ( Compile failed with error code 1 in tmp pip build root uwsgi ) 
Я пытаюсь следить за руководством в http: // uwsgi -docs.readtheDocks.org/en/latest/tutorials/django_and_nginx.html . Я получил все, что все работает TOHTTP:...

12  Редактировать с помощью контекстного меню IDLE (Python GUI) в Windows & NBSP; 7  ( Edit with idle python gui context menu on windowsnbsp7 ) 
Под Windows XP у меня есть контекстное введение меню «Редактировать с простым» для python исходные файлы. Я пытался сделать эту работу под Windows 7 (32-бит...