Слияние кода python и tkinter
Имеется 2 куска кода, один отвечает за "оформление" окна, а второй как раз-таки является самой программой. Как можно интегрировать одно в другое?
Оформление:
from tkinter import *
from tkinter.ttk import Combobox
def clicked():
lbl = Label(window, text="Результат")
lbl.grid(column=20, row=20)
window = Tk()
window.title("Добро пожаловать в приложение PythonRu")
window.geometry('600x250')
combo = Combobox(window)
combo['values'] = ("Выберите тип ТС:", "Самокат", "Мото транспорт", "Автотранспорт", "Авиатранспорт")
combo.current(0) # установите вариант по умолчанию
combo.grid(column=0, row=0)
lbl = Label(window, text="Введите скорость ТС:")
lbl.grid(column=16, row=0)
txt = Entry(window, width=10)
txt.grid(column=20, row=0)
btn = Button(window, text="Результат", command=clicked)
btn.grid(column=25, row=0)
window.mainloop()
И сама программа:
X = (input ("тип АТ: "))
if X == ("Самокат"):
speed_s = int(input ("Скорость самоката: "))
if 0<=speed_s<=30:
print ("Скоростной режим не нарушен")
elif speed_s>=30:
print ("Вызываю скорую помощь...")
if X == "Автомобиль":
speed_a = int(input ("Скорость автомобиля: "))
if 0<=speed_a<=80:
print ("Скоростной режим не нарушен.")
elif speed_a>=80:
print ("Скоростной режим нарушен.")
if X == "Мотоцикл":
speed_b = int(input ("Скорость мототранспорта: "))
if 0<=speed_b<=60:
print ("Скоростной режим не нарушен.")
elif speed_b>=60:
print ("Скоростной режим нарушен.")
if X == "Авиатранспорт":
speed_c = int(input ("Скорость авиатранспорта: "))
if 0<=speed_c<=900:
print ("Скоростной режим не нарушен.")
elif speed_c>=900:
print ("Скоростной режим нарушен.")
Т.е. в итоге я хочу получить что-то наподобие такого: Пользователь выбирает тип ТС из списка, вводит скорость и нажимает на кнопку. Программа же выводит нарушен/не нарушен скоростной режим
Ответы (1 шт):
Автор решения: GravyTalk
→ Ссылка
Интеграция в этом случае - оборачивание Вашего рабочего кода в функцию, которая будет обрабатывать случаи, выбранные пользователем при нажатии на кнопку:
import tkinter as tk
from tkinter import ttk
class App(tk.Tk):
def __init__(self):
super().__init__()
# Окно приложения
self.title('Добро пожаловать в приложение PythonRu')
self.geometry('600x250')
self.style = ttk.Style(self)
self.combo = ttk.Combobox(self)
self.combo['values'] = ("Выберите тип ТС:", "Самокат", "Мото транспорт", "Автотранспорт", "Авиатранспорт")
self.combo.current(0) # установите вариант по умолчанию
self.combo.grid(column=0, row=0)
self.lbl = ttk.Label(self, text="Введите скорость ТС:")
self.lbl.grid(column=16, row=0)
self.txt = ttk.Entry(self, width=10)
self.txt.grid(column=20, row=0)
self.btn = ttk.Button(self, text="Результат", command=self.clicked)
self.btn.grid(column=25, row=0)
# Метка для вывода результата
self.lbl_result = ttk.Label(self, text="")
self.lbl_result.grid(column=0, row=1, columnspan=4)
def clicked(self):
vehicle_type = self.combo.get()
speed = int(self.txt.get())
result = ""
if vehicle_type == "Самокат":
if 0 <= speed <= 30:
result = "Скоростной режим не нарушен"
else:
result = "Вызываю скорую помощь..."
elif vehicle_type == "Автомобиль":
if 0 <= speed <= 80:
result = "Скоростной режим не нарушен."
else:
result = "Скоростной режим нарушен."
elif vehicle_type == "Мото транспорт":
if 0 <= speed <= 60:
result = "Скоростной режим не нарушен."
else:
result = "Скоростной режим нарушен."
elif vehicle_type == "Авиатранспорт":
if 0 <= speed <= 900:
result = "Скоростной режим не нарушен."
else:
result = "Скоростной режим нарушен."
# Обновляем текст метки результата
self.lbl_result.config(text=result)
if __name__ == '__main__':
app = App()
app.mainloop()