Как бороться с возможными ошибками отступов и определений в программе на Python с классами - PullRequest
0 голосов
/ 23 сентября 2018

Я написал программу на python с библиотеками tkinter и pillow, где пользователь может открыть изображение.Затем они могут увеличивать или уменьшать изображение с помощью слайдера.Я отправил вопрос о выводе фотоизображения здесь: PhotoImage не отвечает на виджет масштаба Python tkinter , и изменения сработали.Затем я попытался переписать свою программу, используя класс MainApp (), но именно здесь у меня, казалось бы, неописуемые (для меня) ошибки определения - в частности, tk Canvas canvasframw - и ошибки отступов.Как мне избежать этого?

Вот соответствующая часть кода класса Python:

from Tkinter import *
import tkFileDialog
from PIL import ImageTk, Image


factor = 1.0
width_org = 500
height_org = 500
class MainApp(Frame):
    def createControls(self):
        frame = Frame(self, width = 600, height = 500)
        frame.configure(background = 'red')
        frame.pack(anchor = 'nw')
        canvasframe = Canvas(frame, width = 600, height = 500, scrollregion = (-600,-500,600,500))
        canvasframe.configure(xscrollcommand= hbar.set, yscrollcommand= vbar.set)
        canvasframe.pack(expand = True, fill = BOTH)
        hbar = Scrollbar(frame, orient=HORIZONTAL)
        hbar.pack(side=BOTTOM, fill=X)
        hbar.configure(command= canvasframe.xview)
        vbar = Scrollbar(frame, orient=VERTICAL)
        vbar.pack(side=RIGHT, fill = Y)
        vbar.configure(command= canvasframe.yview)


    def __init__(self, parent):
        Frame.__init__(self, parent, width = 800, height = 600, background = 'yellow')
        self.pack()
        self.createControls()


root = Tk()
app = MainApp(parent =root)

app.mainloop()

1 Ответ

0 голосов
/ 23 сентября 2018

Попробуйте это:

def createControls(self):
    frame = Frame(self, width = 600, height = 500)
    frame.configure(background = 'red')
    frame.pack(anchor = 'nw')
    hbar = Scrollbar(frame, orient=HORIZONTAL)
    hbar.pack(side=BOTTOM, fill=X)
    vbar = Scrollbar(frame, orient=VERTICAL)
    vbar.pack(side=RIGHT, fill = Y)
    canvasframe = Canvas(frame, width = 600, height = 500, scrollregion = (-600,-500,600,500))
    canvasframe.configure(xscrollcommand= hbar.set, yscrollcommand= vbar.set)
    canvasframe.pack(expand = True, fill = BOTH)
    hbar.configure(command= canvasframe.xview)
    vbar.configure(command= canvasframe.yview)

Получите IDE (например, PyCharm), чтобы избежать ошибок определения, подобных этой.

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