Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: Redgar ProОтветов: 1

Вот код, написанный до сих пор... Код в основном функционирует как пользовательский интерфейс для другой программы 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, и любая помощь очень ценится.

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

pythontkinterttk

Ответы

Ответ 1 · рейтинг 2 · tayken

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы