Создание пользовательского интерфейса для программы Python. Темы с ttk темами для tkinter, но они не работают для меток и кнопок и возвращают странную ошибку

Вот код, написанный до сих пор... Код в основном функционирует как пользовательский интерфейс для другой программы Python. Другая программа на Python не вызывает никаких проблем... Никто не смог помочь мне с предыдущим сообщением, поэтому я перефразировал и разместил повторно...

import tkinter as tk
from tkinter import ttk
from ttkthemes import themed_tk as tk
import subprocess
import sys
import time
import os
import tkinter.font as font
from tkinter.ttk import *

app = tk.ThemedTk()
app.get_themes()
app.set_theme("radiance")


app.geometry("400x400")
app.configure(bg='gray')


ex_activate_photo = tk.PhotoImage(file=r"C:\Users\bedga\PycharmProjects\GUIdev\ex_button_active.png") #It underlines PhotoImage
myFont = font.Font(family='Helvetica', size=20, weight='normal')

ttk.Label(app, text='Ex', bg='gray', font=(
    'Verdana', 15)).pack(side=tk.TOP, pady=10)
app.iconbitmap(r'C:\Users\ex\ex_icon.ico')


def ex_activation():
    global pro
    print("Ex")
    pro = subprocess.Popen("python ex.py", shell=True)


def ex_stop():
    global pro
    print("Stopping Program... Please Wait!")
    os.kill(pro.pid, 0)


ex_activation_button = ttk.Button(app, bg='black', image=ex_activate_photo, width=120, height=120, command=ex_activation)


ex_stop_button = ttk.Button(app, bg='Gray', text='Stop Program', width=12, command=ex_stop, height=3)


ex_stop_button['font'] = myFont

app.title("Ex")
ex_activation_button.pack(side=tk.TOP)
ex_stop_button.pack(side=tk.LEFT)

# app.mainloop()
while True:
    try:
        app.update()
        app.update_idletasks()
    except KeyboardInterrupt:
        pass

Цель здесь состоит в том, чтобы в конечном итоге оформить каждую кнопку (2) и метку вверху. Затем я могу применить аналогичные методы при создании новых тем в будущем. В настоящее время PhotoImage не любит tk и ttk. Программа подчеркивает это. Одна из тематических кнопок основана на фотографиях, а другая — на тексте. Я видел успешные проекты с тематическими кнопками-изображениями.

Это ошибка, которую я получаю с tk.photoimage

Traceback (most recent call last):
  File "C:/Users/ex/main.py", line 19, in <module>
    ex_activate_photo = tk.PhotoImage(file=r"C:\Users\ex\ex_button_active.png") #It underlines PhotoImage
AttributeError: module 'ttkthemes.themed_tk' has no attribute 'PhotoImage'

РЕДАКТИРОВАТЬ: это ошибка, которую я получаю за выполнение

import tkinter as tk
from ttkthemes import themed_tk as tkk
import subprocess
import sys
import time
import os
import tkinter.font as font
from tkinter.ttk import *

Я получаю эту ошибку:

Traceback (most recent call last):
  File "C:/Users/ex/main.py", line 19, in <module>
    ex_activate_photo = tk.PhotoImage(file=r"C:\Users\ex\ex_button_active.png") #It underlines PhotoImage
  File "C:\Users\ex\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 3539, in __init__
    Image.__init__(self, 'photo', name, cnf, master, **kw)
  File "C:\Users\ex\AppData\Local\Programs\Python\Python36\lib\tkinter\__init__.py", line 3495, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
_tkinter.TclError: couldn't open "C:\Users\ex\PycharmProjects\ex\ex_button_active.png": no such file or directory

Я не думал, что темы ttk будут иметь проблемы с PhotoImage в качестве переменной, потому что это библиотека тем для tkinter. Я очень новичок в разработке графического интерфейса в Python, и любая помощь очень ценится.


person Redgar Pro    schedule 14.08.2020    source источник
comment
Почему вы снова задаете тот же вопрос, что и предыдущий вопрос (который вы удалили)?   -  person acw1668    schedule 14.08.2020
comment
Кажется, что первый блок кода, первая обратная трассировка и последняя обратная трассировка имеют разные пути к файлу изображения. Суть в том, что если python говорит, что не может найти файл, он не может найти файл. Вы должны иметь опечатку в имени файла или сделать какое-то другое предположение, которое является ложным.   -  person Bryan Oakley    schedule 14.08.2020


Ответы (1)


Вы импортируете 2 библиотеки как tk, это ваша основная проблема. Первые 3 строки вашего кода здесь

import tkinter as tk
from tkinter import ttk
from ttkthemes import themed_tk as tk

В первой и третьей строках есть as tk, поэтому последняя вступает во владение. Сообщение об ошибке также указывает на это. Вы должны переименовать один из них.

person tayken    schedule 14.08.2020
comment
Проблема возникает, даже если я изменю имя библиотеки. Это было то, что я забыл упомянуть. Я обновил вопрос с ошибками, которые я получаю при модифицированном импорте библиотек. - person Redgar Pro; 14.08.2020
comment
Хотя это совсем другая проблема. Мой ответ решает вашу первоначальную проблему. Теперь вы перемещаете стойку ворот. Кроме того, пример кода, который у вас есть, и сообщение об ошибке, которое у вас есть, содержат совершенно разные пути. - person tayken; 14.08.2020