Я новичок в создании GUI-создания python, и я пытался сделать калькулятор.
До сих пор я разработал внешний вид и сделал возможным, чтобы при нажатии клавиши его метка отображается в текстовом поле ввода, но то, что я не могу сделать, например, при вводе 789 x 789, как получить результат это будет отображаться в текстовом поле ввода.
Link to my code:Python GUI Calculator он нужен lp
ответ
Если вы действительно хотите использовать текст в текстовом поле (и с небольшой ловкостью я думаю это минимальное усилие-путь) будет использовать eval()
по тексту. Конечно, требуется какая-то модификация. Вам нужно использовать * вместо x для умножения, а log и sqrt должны eval
текст сначала, вычислить, а затем записать результат.
Слово предупреждения, кстати. Никогдаeval
любой фрагмент текста, которому вы не доверяете полностью. Это открывает всевозможные проблемы безопасности. (Подумайте, например, eval("os.system('rm -rf /')")
). И даже если вы считаете, что можете сделать текст, предоставленный пользователем, безопасным, есть several pitfalls.
Редактировать: Разместите это здесь, чтобы все могли видеть. Как уже упоминалось в комментариях, вам явно необходимо отключить прямой ввод в текстовое поле, так что только кнопки могут влиять на его содержимое. textbox.set_overwrite_mode(False)
должен выполнить это.
Можете ли вы объяснить мне что-то об eval() для меня, никогда не слышали об этом. –
Несомненно. 'eval' принимает выражение python как ввод (в строке) и возвращает результат вычисления этого выражения. Так, например, 'eval (" 1337-42 ")' возвращает 1295. Таким образом, если текстовое поле содержит арифметическое выражение, вы можете взять этот текст, передать его в 'eval' и вернуть результат (в виде числа). Но, конечно, это должно быть допустимое арифметическое выражение в python. –
ok, так что в основном вы говорите, что eval get является строкой, и если это допустимое арифметическое выражение возвращает результат как число? Ну, спасибо за это, я узнал что-то новое, и я собираюсь попробовать это на своем калькуляторе. –
Я думаю, что это то, что вы хотите
class Calc:
numbers = []
operators = []
...
def pressed(self,widget): #This functions makes possible that the label of a button is displayed in the textbox when that button is pressed
num = self.textbox.get_text()
pnum = widget.get_label()
result = ""
if pnum in "1234567890.":
self.textbox.set_text(num + pnum)
return
elif pnum == "x":
self.numbers.append(float(num))
self.operators.append(operator.mul)
elif pnum == "+":
self.numbers.append(float(num))
self.operators.append(operator.add)
elif pnum == "-":
self.numbers.append(float(num))
self.operators.append(operator.sub)
elif pnum == "/":
self.numbers.append(float(num))
self.operators.append(operator.div)
elif pnum == "sqrt":
self.numbers.append(float(num)**0.5)
elif pnum == "=":
self.numbers.append(float(num))
for op in self.operators:
self.numbers.insert(0, op(self.numbers.pop(0),self.numbers.pop(0)))
result = str(self.numbers[0])
self.textbox.set_text(result)
Я получаю сообщение о том, что глобальные номера имен не определены –
oops вам нужно поместить их в пространство классов .... (отредактированный ответ) –
убедитесь, что вы используете пробелы или вкладки, не смешивая их (копирование/вставка может делайте забавные вещи с пустыми символами) –
- 1. Python Tkinter GUI Calculator
- 2. Добавление кнопки backspace в Python GUI Calculator
- 3. Java GUI Scientific Calculator
- 4. GUI Calculator application
- 5. Java GUI Calculator
- 6. Java Calculator GUI
- 7. Pi Calculator В Python, он полностью функциональный?
- 8. Python GPA Calculator
- 9. Tkinter Calculator Python 3.4.2
- 10. Python: change calculator
- 11. plMortgage Calculator GUI Issue with A Lot
- 12. Foolproofing Python calculator
- 13. Python Calculator, No Answer
- 14. Matrices Class Calculator Python
- 15. python tkinter bmi calculator
- 16. Python parser for Calculator
- 17. Что можно назначить num1, чтобы он обновил программу? Python Calculator
- 18. Matlab GUI, нужен ручка объекта
- 19. Loop in Tip Calculator (Python)
- 20. Simple Python Calculator Challenge 2.7
- 21. бинарный LP против целого числа LP
- 22. Python Vector Calculator (математический импорт)
- 23. Формулировка ограничений для LP в Pulp Python
- 24. Gurobi in python для вычисления нормы lp
- 25. Двойной @синхронизированный: он нужен?
- 26. SwingUtilities.invokeLater() зачем он нужен?
- 27. Приложение Python GUI
- 28. GUI Calculator - ValueError: недействительный литерал для int() с базой 10: ''
- 29. SyntaxError: неожиданный EOF при разборе Python Calculator
- 30. LP Алгоритм Simplex в C++
плохое место, чтобы разместить свой код ... хром Wouldnt позвольте мне пойти туда –
я рекомендовал бы разместить код непосредственно на StackOverflow. Если он слишком большой, то оставьте части, которые не имеют значения для вопроса, который вы задаете. –
Похоже, это не вопрос GUI ... Вы действительно должны справиться со всем этим, когда получите ввод. текстовое поле - это просто дисплей, но если вы действительно хотите его использовать, вам нужно будет прочитать текст и проанализировать его, но это действительно круговое и не очень эффективное наблюдение, поскольку вы сначала получаете данные ... – Fry