Запуск кода python через удобный интерфейс - PullRequest
0 голосов
/ 12 июля 2020

дополнительный вопрос Я работаю над проектом для члена семьи, у меня довольно ограниченный опыт работы с Python. Я написал свой сценарий на Python, и он работает именно так, как мне нужно. Код делает снимок и добавляет красную границу либо к длине, либо к ширине, чтобы создать квадрат.

Моя проблема в том, что член моей семьи не использует Python, и после небольшого исследования я наткнулся на tkinter для GUI. Я хотел бы иметь текстовое поле, в котором можно ввести имя изображения, и которое запускает код из строки ввода.

У меня есть его, где вы вводите MyImage.PNG в консоль, и он сохраняет версию границы в тот же файл. Кроме того, я понимаю, как проектировать с помощью tkinter, но не как на самом деле выполнить мой скрипт с текстовым полем / кнопками. Есть какие-нибудь советы о том, как этого добиться?

Я хотел бы вызывать изображения из файла без необходимости индивидуального ввода имени изображения. Возможно ли это через открытый l oop? Или даже с помощью виджета Tkinter, чтобы прочитать файл изображений, создать список из файла, а затем индивидуально выбрать каждое изображение и нажать Enter.

Спасибо!

from PIL import Image, ImageOps
import math
original = input("Please enter an input: ")
im = Image.open(original)

print(im.size)
print(type(im.size))

w, h = im.size
print('width: ', w)
print('height:', h)

if w>h:
    x = w - h
    b = math.floor(x/2)
    a = 0
if w<h:
    x = h - w
    a = math.floor(x/2)
    b = 0
        
    
def add_border(input_image, output_image, border, color=0):
    img = Image.open(input_image)
    if isinstance(border, int) or isinstance(border, tuple):
        bimg = ImageOps.expand(img, border=border, fill=color)
    else:
        raise RuntimeError('Border is not an integer or tuple!')
    bimg.save(output_image)
if __name__ == '__main__':
     add_border(original,
                output_image= 'border' + original,
                border=(a,b,a,b),
                color='indianred')

1 Ответ

1 голос
/ 12 июля 2020

Tkinter имеет функцию поля ввода, поэтому вы можете сделать что-то вроде:

from tkinter import *

def Get_Name_Of_Picture():
    original=str(PicName.get())

PicName=Entry(screen)
PicName.pack()

Button(screen, text='Enter', command=Get_Name_Of_Picture).pack(side=LEFT)

Что-то вроде этого (вам, возможно, придется поместить остальной код в функцию Get_Name_Of_Picture), но это позволит пользователю чтобы ввести данные в поле ввода, и как только они будут выполнены, нажмите кнопку ввода, чтобы получить строку того, что было набрано, и т. д.

Если вам нужен дополнительный совет, просто прокомментируйте этот ответ, и я попробуй помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...