я получаю синтаксическую ошибку в переменных при создании калькулятора, я не знаю, почему?

#tkinter #syntax-error #var

#tkinter #синтаксическая ошибка #var

Вопрос:

ну, я запускаю python, создавая калькулятор, и не могу понять ошибку, мой код выглядит так

 import tkinter as Tk

root = Tk()
root.Geometry("250*400 300 300")
root.resizeable(0,0)
root.title("Calculator")

btnrow1 = Frame(root , bg="#00000")
btnrow1.Pack(expand = True, fill = "both",)

btnrow2 = Frame(root)
btnrow2.Pack(expand = True, fill = "both",)

btnrow3 = Frame(root)
btnrow3.Pack(expand = True, fill = "both",)

btnrow4 = Frame(root)
btnrow4.Pack(expand = True, fill = "both",)

btn1 = Button(
     btnrow1,
     text = "1",
     font = ("verdana",22)
)
btn1.Pack(side = LEFT , expand = True,)

root.mainloop()
  

и это выдает синтаксическую ошибку в btnrow2

 (base) C:UsershpDocumentsdatascience>python -u "c:UsershpDocumentscalculatorcalculatormadebyshaan.py"
  File "c:UsershpDocumentscalculatorcalculatormadebyshaan.py", line 11
    btnrow2 = Frame(root)
          ^
SyntaxError: invalid syntax
  

может быть, это выдает ошибку позже также btnrow3

пожалуйста, помогите мне, я новичок в Python
спасибо

Комментарии:

1. Вместо этого я попал TypeError: 'module' object is not callable в строку root = Tk() .

Ответ №1:

В конечном счете, это SyntaxError потому, что вы ставите запятые в конце своих pack вызовов. Исправьте, просто удалив их (например, btnrow1.Pack(expand = True, fill = "both",) становится btnrow1.Pack(expand = True, fill = "both") ). Как только вы преодолеете эту проблему, вы столкнетесь с парой других проблем, которые заключаются в следующем:

  1. Вы импортируете, tkinter используя import tkinter as Tk , но затем ссылаетесь на классы, используя только их имена (т. Е. Как если бы вы импортировали с помощью from tkinter import * ). Чтобы решить эту проблему, либо измените ссылки на tkinter классы только с их имен на Tk.<name> (например, Tk() becomes Tk.Tk() и Frame becomes Tk.Frame ), либо измените оператор импорта на from tkinter import * .
  2. Вы пытаетесь вызвать методы класса с заглавной буквой в начале (особенно для Geometry и Pack ). Они должны быть полностью в нижнем регистре ( geometry и pack ).

Кстати, для кнопок калькулятора я бы порекомендовал вам заглянуть в grid manager вместо pack , поскольку это (сетка кнопок 3×3 с номерами 1-9) является примером из учебника о том, когда ее следует использовать.