Python 3 Tkinker Text Box: "IndentationError: unexpected indent" Whenever I add new text to result text box

Python 3 Tkinker Text Box: "IndentationError: unexpected indent" Whenever I add new text to result text box

我正在尝试根据计算器的结果文本计算计算器输入的结果 window。默认以“0”开头。

例如,当我添加 3 时: “0 + 3”

但是,当我添加另一个操作(如添加 4)时,我得到以下信息: "0 + 3

出于某种原因,当我尝试添加更多计算器输入时,我总是得到这些缩进。 当我尝试计算结果时,遇到“IndentationError: unexpected indent.”

不知道为什么 tkinker 或 python 这样做。

calculator.py

# -*- coding: utf-8 -*-
from classes_GUI import *


# Store input number
def storeInput(entry_text, result_text, action):
    numb = 0.0

    try:
        numb = float(entry_text.retrieveTextInput())
    except ValueError:
        print('Please enter a valid number')
        return

    num = entry_text.retrieveTextInput()

    input_texts = dict([
        (1, ' + ' + str(num)),
        (2, ' - ' + str(num)),
        (3, ' * ' + str(num)),
        (4, ' / ' + str(num)),
        (5, ' % ' + str(num)),
        (6, ' // ' + str(num)),
        (7, ' ** ' + str(num))
    ])

    result_text.changeText(input_texts[action])
    entry_text.clearText()


# Calculate result
def calcResult(entry_text, result_text):
    result = eval(result_text.retrieveTextInput())
    entry_text.clearText()
    result_text.changeText(str(result), True)

classes_GUI.py

# Create a data block for text
class TextBlock(tk.Text):
    def __init__(self, master, row, column, text='', **kwargs):
        tk.Text.__init__(self, master, **asdict(TextDc(**kwargs)))

        self.grid(row=row, column=column)
        self.insert('1.end', text)

    # Clear text
    def clearText(self):
        self.delete('1.0', 'end')

    # Change text
    def changeText(self, new_txt, clear=False):
        self.config(state='normal')
        if clear:
            self.clearText()
        self.insert('end', new_txt)
        self.config(state='disabled')

    # Retrieve input from text box
    def retrieveTextInput(self):
        return self.get('1.0', 'end')

好的,我找到了问题的解决方案:

# Store input number
def storeInput(entry_text, result_text, action):
    numb = 0.0

    try:
        numb = float(entry_text.retrieveTextInput())
        numb = str(numb)
    except ValueError:
        print('Please enter a valid number')
        return

    input_texts = dict([
        (1, ' + ' + numb),
        (2, ' - ' + numb),
        (3, ' * ' + numb),
        (4, ' / ' + numb),
        (5, ' % ' + numb),
        (6, ' // ' + numb),
        (7, ' ** ' + numb)
    ])

    result_text.changeText(input_texts[action])
    entry_text.clearText()

问题是我将数字输入(在本例中为 var numb)读取为 str 而不是 float。将变量作为浮点数读取,然后将其转换为 str 解决了问题。