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
- 4
出于某种原因,当我尝试添加更多计算器输入时,我总是得到这些缩进。
当我尝试计算结果时,遇到“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 解决了问题。
我正在尝试根据计算器的结果文本计算计算器输入的结果 window。默认以“0”开头。
例如,当我添加 3 时: “0 + 3”
但是,当我添加另一个操作(如添加 4)时,我得到以下信息: "0 + 3
- 4
出于某种原因,当我尝试添加更多计算器输入时,我总是得到这些缩进。 当我尝试计算结果时,遇到“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 解决了问题。