2016-12-15 2 views
0

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

from tkinter import * 
    def black_white(): 
average = 382.5 
for x in range (image.width()): 
    for y in range (image.height()): 
     c = image.get(x, y) 
     brightness = int(c[0]) + int(c[1]) + int(c[2]) 
     if brightness < average: 
      image.put("black", (x)) 
     else: 
      image.put("white", (x)) 

    window = Tk() 
    image = PhotoImage(file="1.gif") 
    button = Button(master=window, command=black_white, 
      font=("Arial", 14), 
      text="Bearbeiten") 

    label = Label(master=window, image=image) 
    label.pack() 
    button.pack(fill=X) 
    window.mainloop() 

однако код не работает, то сообщение об ошибке я получаю:

Exception in Tkinter callback 
    Traceback (most recent call last): 
     File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/__init__.py", line 1550, in __call__ 
return self.func(*args) 
     File "/Users/(anonymous)/Desktop/programmieren/raspberry_lehrbuch/schwarzweiß.pyw", line 8, in black_white 
brightness = int(c[0]) + int(c[1]) + int(c[2]) 
    ValueError: invalid literal for int() with base 10: ' ' 

я уже сделал несколько исследований, но не смогли найти ничего, что заставило его работать. помощь очень высоко ценится :) ой, и я использую Macbook Pro 2010 с El Capitan

+0

ошибка означает, что вы пытаетесь преобразовать пустую строку в целое число. Попробуйте 'int (" ")' и вы получите то же сообщение об ошибке. Проверьте 'c' перед тем, как вы сделаете' bright = int (c [0]) + int (c [1]) + int (c [2]) ' – furas

ответ

1

изменение (x) в (x,y), должна быть позиция x, y

from tkinter import * 


def black_white(): 
    average = 382.5 
    for x in range(image.width()): 
     for y in range(image.height()): 
      c = image.get(x, y) 
      brightness = int(c[0]) + int(c[1]) + int(c[2]) 
      if brightness < average: 
       image.put("black", (x, y)) 
      else: 
       image.put("white", (x, y)) 


window = Tk() 
image = PhotoImage(file="1.gif") 
button = Button(master=window, command=black_white, 
       font=("Arial", 14), 
       text="Bearbeiten") 

label = Label(master=window, image=image) 
label.pack() 
button.pack(fill=X) 
window.mainloop() 

Перед щелкнул:

enter image description here

После нажатия:

enter image description here

Смежные вопросы