С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 14.04.2024
Сообщений: 25
1

Ввод времени с помощью библиотеки tkinter

24.05.2024, 14:22. Показов 952. Ответов 15

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите, как, используя библиотеку tkinter, написать код, который позволит вводить время в формате "ЧЧ:ММ" так, чтобы это можно было потом использовать в качестве переменной.

Например, мне нужно использовать введенное время в условии, примерно так:
Если "введенное время" больше 12:00 и меньше 13:00 то:
и т.д.

Буду рад любой помощи.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.05.2024, 14:22
Ответы с готовыми решениями:

Рандомный ввод элементов матрицы с помощью библиотеки numpy
Реализуйте рандомный ввод элементов матрицы с помощью библиотеки numpy. Необходимо обработать...

Считать данные амперметра в реальном времени с помощью библиотеки gpib
Прошу помочь с написанием кода. Суть в чем амперметр подключен к компу через шину. Нужно считывать...

Структура "Читатель библиотеки", не получается ввод времени
нужно создать сруктуру, которая содержит номер читательского билетовфамилии авторовназвания...

График функции с использованием библиотеки tkinter
Здравствуйте, помогите пж сделать график функции только с использованием tkinter в Python, он...

Ввод на русском tkinter
Кода делаю ввод на русском языке с консоли, все нормално работает, а когда пробую с Tkinterom, то в...

15
Просто Лис
Эксперт Python
5966 / 3729 / 1097
Регистрация: 17.05.2012
Сообщений: 10,787
Записей в блоге: 9
24.05.2024, 16:13 2
Python
1
2
3
4
>>> import datetime
>>> d = datetime.datetime.strptime('12:55', '%H:%M').time()
>>> datetime.time(12, 0) < d < datetime.time(13, 0)
True
0
0 / 0 / 0
Регистрация: 14.04.2024
Сообщений: 25
24.05.2024, 16:39  [ТС] 3
Допусти оно работает, но в самом начале я указал что будет использоваться библиотека tkinter, и собственно вопрос в том, можно ли в созданном меню сделать текстовое поле, или что-то в этом роде, куда человек будет заносить время, которое потом можно будет использовать как переменную?
0
Просто Лис
Эксперт Python
5966 / 3729 / 1097
Регистрация: 17.05.2012
Сообщений: 10,787
Записей в блоге: 9
24.05.2024, 16:40 4
Можно.
0
0 / 0 / 0
Регистрация: 14.04.2024
Сообщений: 25
24.05.2024, 16:58  [ТС] 5
Можете подсказать как это сделать?
0
512 / 337 / 145
Регистрация: 16.02.2021
Сообщений: 619
24.05.2024, 20:52 6
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import tkinter as tk
from tkinter import *
 
root = tk.Tk()
root.geometry("200x200")
 
def get_time():
    hour = spinbox.get()
    minute = spinbox2.get()
    lbl_time['text'] = f'Выбранное время: {hour}:{minute}'
    
spinbox = tk.Spinbox(root, values=[str(i).zfill(2) for i in range(24)],justify='right', width=3, font=("Arial", 12), fg="blue",state="readonly")
spinbox.place(x=10,y=10)
 
lbl = Label(root, text=":")
lbl.place(x=55,y=10)
 
spinbox2 = tk.Spinbox(root, values=[str(i).zfill(2) for i in range(60)],justify='right', width=3, font=("Arial", 12), fg="blue",state="readonly")
spinbox2.place(x=65,y=10)
 
btn = Button(root, text="Ок",command=get_time)
btn.place(x=120,y=7)
 
lbl_time = Label(root, text="")
lbl_time.place(x=5,y=40)
 
root.mainloop()
1
0 / 0 / 0
Регистрация: 14.04.2024
Сообщений: 25
25.05.2024, 02:34  [ТС] 7
Спасибо, такой вариант меня устраивает, только остался еще один вопрос.

У меня вне этой функции еще есть условие, которое будет зависеть от введенного времени, например я хочу получить из этой функции значение часа и использовать как переменную, поэтому я дописал функцию так:
Python
1
2
3
4
5
6
def get_time():
    hour = spinbox.get()
    minute = spinbox2.get()
    text_input.insert(END, f"Время выезда: {hour}:{minute}" + "\n")
    return hour
    return minute
В условии я, например, прописываю:
Python
1
if hour == 8 and minute > 30
Но проблема заключается в том, что ни hour ни minute не становятся активными, хотя return прописан.
Подскажите как это исправить.
0
Просто Лис
Эксперт Python
5966 / 3729 / 1097
Регистрация: 17.05.2012
Сообщений: 10,787
Записей в блоге: 9
25.05.2024, 05:22 8
Python
1
    return (hour, minute)
0
0 / 0 / 0
Регистрация: 14.04.2024
Сообщений: 25
25.05.2024, 05:53  [ТС] 9
Не работает, все равно пишет что переменная не определена
0
512 / 337 / 145
Регистрация: 16.02.2021
Сообщений: 619
25.05.2024, 06:39 10
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import tkinter as tk
from tkinter import *
 
root = tk.Tk()
root.geometry("200x200")
 
class TimeVar():
    def __init__(self):
        self.selected_time = '00:00'
 
    def __str__(self):
        return self.selected_time
        
    def get_time(self):
        hour = spinbox.get()
        minute = spinbox2.get()
        self.selected_time = f'{hour}:{minute}'
        lbl_time['text'] = f'Выбранное время: {hour}:{minute}'
        return self.selected_time
 
selected_time = TimeVar()
 
spinbox = tk.Spinbox(root, values=[str(i).zfill(2) for i in range(24)],justify='right', width=3, font=("Arial", 12), fg="blue",state="readonly")
spinbox.place(x=10,y=10)
 
lbl = Label(root, text=":")
lbl.place(x=55,y=10)
 
spinbox2 = tk.Spinbox(root, values=[str(i).zfill(2) for i in range(60)],justify='right', width=3, font=("Arial", 12), fg="blue",state="readonly")
spinbox2.place(x=65,y=10)
 
lbl_time = Label(root, text="")
lbl_time.place(x=5,y=40)
 
btn = Button(root, text="Выбранное время",command=lambda:print(selected_time.get_time()))
btn.place(x=5,y=170)
 
root.mainloop()

selected_time.get_time() возвращает выбранное время
0
0 / 0 / 0
Регистрация: 14.04.2024
Сообщений: 25
25.05.2024, 09:24  [ТС] 11
Прошу прощения за глупые вопросы, я новичок в этом, но я правильно понимаю, что в данном случае selected_time будет принимать строковое значение?
0
512 / 337 / 145
Регистрация: 16.02.2021
Сообщений: 619
25.05.2024, 10:57 12
Цитата Сообщение от tysrusko Посмотреть сообщение
что в данном случае selected_time будет принимать строковое значение?
да, всё верно,
при желании можно вернуть любой тип
0
0 / 0 / 0
Регистрация: 14.04.2024
Сообщений: 25
25.05.2024, 15:33  [ТС] 13
Можете тогда подсказать, как конвертировать selected_time в формат даты, чтобы я его мог использовать например в следующем условии:
Python
1
if selected_time > datetime.time(12, 0, 0) and selected_time < datetime.time(14, 0, 0):
0
512 / 337 / 145
Регистрация: 16.02.2021
Сообщений: 619
25.05.2024, 21:14 14
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import tkinter as tk
from tkinter import *
import datetime
 
root = tk.Tk()
root.geometry("200x200")
 
class TimeVar():
    def __init__(self):
        self.selected_time = datetime.time(0, 0, 0)
 
    def __str__(self):
        return self.selected_time
        
    def get_time(self):
        self.selected_time = datetime.time(int(spinbox.get()), int(spinbox2.get()), 0)
        lbl_time['text'] = f'Выбранное время: {self.selected_time}'
        return self.selected_time
 
    def check_time(self):
        self.selected_time = datetime.time(int(spinbox.get()), int(spinbox2.get()), 0)
        if datetime.time(14, 0, 0) > self.selected_time > datetime.time(12, 0, 0):
            print(f'Выбранное время: {self.selected_time} в диапозоне 12:01 - 13:59')
        else:
            print(f'Выбранное время: {self.selected_time} вне диапозона 12:01 - 13:59')
             
selected_time = TimeVar()
 
spinbox = tk.Spinbox(root, values=[str(i).zfill(2) for i in range(24)],justify='right', width=3, font=("Arial", 12), fg="blue",state="readonly")
spinbox.place(x=10,y=10)
 
lbl = Label(root, text=":")
lbl.place(x=55,y=10)
 
spinbox2 = tk.Spinbox(root, values=[str(i).zfill(2) for i in range(60)],justify='right', width=3, font=("Arial", 12), fg="blue",state="readonly")
spinbox2.place(x=65,y=10)
 
lbl_time = Label(root, text="")
lbl_time.place(x=5,y=40)
 
btn = Button(root, text="Выбранное время",command=lambda:print(selected_time.get_time()))
btn.place(x=5,y=170)
 
btn2 = Button(root, text="Проверить",command=selected_time.check_time)
btn2.place(x=125,y=170)
 
root.mainloop()
0
0 / 0 / 0
Регистрация: 14.04.2024
Сообщений: 25
26.05.2024, 11:01  [ТС] 15
Я вас наверное уже заколебал со своими вопросами, но у меня есть еще один.

Вот сделан класс TimeVar в котором время формируется в некоторую переменную. Но условие, в котором должна применятся данная переменная находится вне этого класса в другой функции.

Допустим у меня есть функция, запускающая алгоритм дейкстры, в которой рассчитывается пройденное расстояние и делится на скорость. Условие мне нужно для того, чтобы в зависимости от введенной даты определять, сколько минут прибавлять к результату.

Собственно в чем вопрос, можно ли использовать этот selected_time в условии вне класса TimeVar, и если можно то как?
0
512 / 337 / 145
Регистрация: 16.02.2021
Сообщений: 619
26.05.2024, 14:16 16
Лучший ответ Сообщение было отмечено tysrusko как решение

Решение

Да можно, тогда check_time можно удалить. Метод get_time возвращает выбранное в spinbox'ах время.

Python
1
t = selected_time.get_time()
1
26.05.2024, 14:16
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.05.2024, 14:16
Помогаю со студенческими работами здесь

Ввод и вывод с tkinter'om
Как сделать так, чтобы текст и строка для ввода текста отображались в окне tkinter'a?(я не совсем...

Сделать такой же рисунок с помощью tkinter
сделать такой же рисунок с помощью tkinter

Ввести и сохранить в файле данные следующей структуры. с использованием библиотеки tkinter
Ввести и сохранить в файле данные следующей структуры: место отдыха (не менее 5 мест), дата заезда,...

Как с помощью WINAPI организовать ввод IP-адреса в поле EDIT с помощью маски
Привет всем. Помогите пожалуйста. Как с помощью WINAPI организовать ввод в поле EDIT с помощью...

Как сделать ввод и вывод в tkinter, а не в консоль?
Такая проблема, ввод и вывод работает только через консоль, как сделать так, чтобы он работал в...

Tkinter+Matplotlib ввод функции в поле Entry
Доброго времени суток! Занимаюсь разработкой программы для построения графика функции с gui при...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на Go/Golang
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C#
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution https:/ / www. cyberforum. ru/ blogs/ 223907/ blog8781. html прилагаю файл архива проекта в Gowin Eda. Восьмибитный счётчик из сумматора+ генератор сигнала. . .
UserScript для подсветки кнопок языков программировани­­­­я в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения: / / ==UserScript== / / @name CF_DefaultLangSelect / / . . .
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru