Итак, я пытаюсь заставить Canvas отобразить окно с кнопками, которые отображают фигуры при нажатии (я также пытаюсь заставить его задать флажок , который заполняетв формах, но это не важно в данный момент), но каждый раз, когда я запускаю программу, она отображает такие вещи, как:
Traceback (последний вызов был последним): файл "C: \ Users \ Brandons \ Desktop\ school files \ Sdev 220 Python \ 9.3ometricfigures.py ", строка 35, в Canvas () Файл" C: \ Users \ Brandons \ Desktop \ school files \ Sdev 220 Python \ 9.3 geometryfigures.py ", строка 13, в init self.canvas = Canvas (окно, ширина = 200, высота = 100, bg = "white") Ошибка типа: init () получила неожиданный аргумент ключевого слова 'width'
Поэтому, когда это произошло, я попытался удалить эту информацию, потому что подумал, что она, возможно, мешает ей, но затем продолжил говорить, что аргументы высота и bg были неожиданными аргументами ключевого слова, поэтому я тоже удалил их. После удаления я запустил программу, оставив только ключевое слово окна, но на этот раз оно показало:
Traceback (последний вызов был последним): файл "C: \ Users \ Brandons \ Desktop \ school files \"Sdev 220 Python \ 9.3 geometryfigures.py ", строка 35, в файле Canvas ()" C: \ Users \ Brandons \ Desktop \ school files \ Sdev 220 Python \ 9.3 geometryfigures.py ", строка 13, в init self.canvas = Canvas (window) TypeError: init () принимает 1 позиционный аргумент, но было дано 2
В конце я также удалил ключевое слово окна. Но когда я сделал это, он запустил программу, но по какой-то причине ничего не появилось, даже ошибка или что-то еще. Так что теперь я не уверен, что делать, так как я уверен, что что-то должно быть там, но я не уверен, как реализовать это, не вызывая ошибки, и чтобы оно действительно отображало окно и кнопки.
from tkinter import *
class Canvas:
def __init__(self):
window = Tk()
window.title("Canvas")
self.canvas = Canvas(window, width = 200, height = 100, bg = "white")
self.canvas.pack()
frame = Frame(window)
frame.pack()
btRectangle = Button(frame, text = "Rectangle", command = self.displayRect)
btOval = Button(frame, text = "Oval", command = self.displayOval)
btRectangle.grid(row = 1, column = 1)
btOval.grid(row = 1, column = 2)
btClear.grid(row = 1, column = 3)
window.mainloop()
def displayRect(self):
self.canvas.create_rectangle(110, 10, 210, 80, outline = "black", tags = "rect")
def displayOval(self):
self.canvas.create_oval(110, 10, 210, 80, outline = "black", tags = "oval")
def clearCanvas(self):
self.canvas.delete("rect", "oval")
Canvas()
РЕДАКТИРОВАТЬ
Хорошо, так что мне удалось выяснить, благодаря обратной связи мне дали, но теперь у меня есть некоторые проблемы с заполнением форм, которые создаются, когда явыбрал флажок, который я создал.
from tkinter import *
class GeofigGUI:
def __init__(self):
window = Tk()
window.title("Geometry Figures")
self.canvas = Canvas(window, width = 300, height = 200, bg = "white")
self.canvas.pack()
frame = Frame(window)
frame.pack()
self.v1 = IntVar()
cbtFill = Checkbutton(frame, text = "Fill", variable = self.v1, command = self.fillCheckbutton)
self.v2 = IntVar()
btRectangle = Button(frame, text = "Rectangle", command = self.displayRect)
btOval = Button(frame, text = "Oval", command = self.displayOval)
btClear = Button(frame, text = "Clear", command = self.clearCanvas)
btRectangle.grid(row = 1, column = 1)
btOval.grid(row = 1, column = 2)
btClear.grid(row = 1, column = 3)
cbtFill.grid(row = 1, column = 4)
window.mainloop()
def displayRect(self):
self.canvas.create_rectangle(110, 10, 210, 80, outline = "black", tags = "rect")
def displayOval(self):
self.canvas.create_oval(110, 10, 210, 80, outline = "black", tags = "oval")
def clearCanvas(self):
self.canvas.delete("rect", "oval")
def fillCheckbutton(self):
if self.v2.get() == 1:
self.canvas.itemconfigure(self.displayRect, fill = "black")
self.canvas.itemconfigure(self.displayOval, fill = "black")
else:
self.canvas.itemconfigure(self.displayRect, fill = 'white')
self.canvas.itemconfigure(self.displayOval, fill = "white")
GeofigGUI()
, когда я запускаю программу, все работает, за исключением флажка, не меняющего цвет форм, которые я делаю. Я не могу найти в книге ничего такого, что могло бы привести к изменению цвета того, что уже есть в коде.