Слияние кода 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()
→ Ссылка