Второе окно tkinter появляется автоматически перед нажатием кнопкиPython

Программы на Python
Anonymous
Второе окно tkinter появляется автоматически перед нажатием кнопки

Сообщение Anonymous »

Я предполагал, что оператор if будет означать, что пользователю необходимо нажать кнопку, чтобы программа проверила, было ли введено значение, отличное от числа с плавающей запятой или не-int, чтобы вызвать открытие другого окна, но оно просто появляется автоматически, когда я запускаю приложение

Код: Выделить всё

import tkinter as tk
import math
from tkinter import *
window = tk.Tk()
window.title('Mortgage Calculator')

# How much is the property?

property_price = tk.Label(
window, text="How much is the property? ", font=("Arial", 11))
property_price.pack(pady=10)
property_price_entry = tk.Entry(window, text="How much is the property?", font=("Arial", 11))
property_price_entry.pack(pady=10,)

# side string next to entry

# How much do you want to pay as a deposit?

property_deposit = tk.Label(
window, text="How much do you want to pay as a deposit?", font=("Arial", 11))
property_deposit.pack(pady=10)
property_deposit_entry = tk.Entry(window, font=("Arial", 11))
property_deposit_entry.pack(pady=10)

# How many years will the term on your mortgage be?

years_of_mortgage = tk.Label(
window, text="How many years will the term be on your mortgage?", font=("Arial", 11), )
years_of_mortgage.pack(pady=10)
years_of_mortgage_entry = tk.Entry(window, font=("Arial", 11))
years_of_mortgage_entry.pack(pady=10)

# How much is the annual interest rate?

interest = tk.Label(
window, text="How much is the annual interest rate?", font=("Arial", 11))
interest.pack(pady=10)
interest_entry = tk.Entry(window,font=("Arial", 11))
interest_entry.pack(pady=10)

# Define a button function

def calculate_mortgage_button():
principlal = float(property_price_entry.get())

deposit = float(property_deposit_entry.get())

principlal = principlal - deposit
annual_interest_rate = float(interest_entry.get())/100

term = float(years_of_mortgage_entry.get())

monthly_payment = principlal * \
(annual_interest_rate/12)/1-(1 + annual_interest_rate/12)**-12*term
monthly_payment = round(monthly_payment, 2)
monthly_payment_label = tk.Label(window, text=f"Your monthly payments are: £{monthly_payment}", font=("Arial", 11))
monthly_payment_label.pack(pady=10)

# Mortgage calculator button

mortgage_button = tk.Button(
window, text='Calculate monthly mortgage payments', command=calculate_mortgage_button)
mortgage_button.config(command=calculate_mortgage_button)
mortgage_button.config(font=('Arial', 11))
mortgage_button.pack(pady=10)

# error window
if calculate_mortgage_button != float or calculate_mortgage_button == str:
error_window = Label(window, text="Please enter a number only.").pack(pady=20)

window.mainloop()
Я бы хотел, чтобы окно появлялось на экране пользователя только в том случае, если он вводит строковый тип данных.

Вернуться в «Python»