Найти - Пользователи
Полная версия: Получить день недели
Начало » Python для новичков » Получить день недели
1
jmj26
Добрый день!
Просьба подсказать, в чем моя ошибка и как её исправить. При помощи выпадающего списка необходимо выбрать дату и получить по ней день недели. Буду рад любой помощи!

 import tkinter as tk
import tkinter.ttk as ttk
from datetime import timedelta
import datetime
today = datetime.datetime.today()
timedelta(days = 1)
n= datetime.datetime.today()+timedelta(days = 1)
m= datetime.datetime.today()+timedelta(days = 2)
p= datetime.datetime.today()+timedelta(days = 3)
colors = (today, n.strftime("%d-%m-%Y"), m.strftime("%d-%m-%Y"), p.strftime("%d-%m-%Y"))
class About(tk.Toplevel):
    def __init__(self, parent):
        super().__init__()
        self.title("Ttk Combobox")
        self.label = ttk.Label(self, text="Пожалуйста, выберите дату и маршрут")
   
        self.combo = ttk.Combobox(self, values=colors)
        self.label.pack(pady=10)
   
        self.combo.pack(side=tk.LEFT, padx=10, pady=5)
       
       
        self.button = tk.Button(self, text="Формирование",
                             command=self.display_color)      
        self.button.pack(pady=5, ipadx=2, ipady=2)
        #---начальное значение комбобокса--------------------------------
        self.combo.current(1)
        #--------------------------------------------------------
    def display_color(self, *args):
        color = self.combo.get()
        #print("Ваш выбор", color)
        # проверка на пустое значение комбобокса
        if not color:
            color="Введите номер маршрута из списка!"
            print(color)
        else:
            print(color)
        from datetime import date
        import calendar
 
        from datetime import date
       
       
        import calendar
   
        my_date = n
        t=calendar.day_name[my_date.weekday()]  #'Wednesday'
        print(t)
    def clear_color(self):
        self.combo.set("")
class App(tk.Tk):
    def __init__(self):
        super().__init__()
        #btn_info = tk.Button(self, text="Печать графика заездов на неделю", bg='turquoise1',
        #                     command=self.destroy)      
        btn_info2 = tk.Button(self, text="Печать графика заездов на день", bg='LightGreen',
                             command=self.open_window)
               
        opts = {'padx': 40, 'pady': 5, 'expand': True, 'fill': tk.BOTH}
        #btn_info.pack(**opts)
        btn_info2.pack(**opts)
       
       
    def open_window(self):
        about = About(self)
        about.grab_set()
if __name__ == "__main__":
    app = App()
    app.mainloop()

jmj26
Уточнение..

 import tkinter as tk
import tkinter.ttk as ttk
from datetime import timedelta
import datetime
today = datetime.datetime.today()
timedelta(days = 1)
n= datetime.datetime.today()+timedelta(days = 1)
m= datetime.datetime.today()+timedelta(days = 2)
p= datetime.datetime.today()+timedelta(days = 3)
colors = (today.strftime("%d-%m-%Y"), n.strftime("%d-%m-%Y"), m.strftime("%d-%m-%Y"), p.strftime("%d-%m-%Y"))
class About(tk.Toplevel):
    def __init__(self, parent):
        super().__init__()
        self.title("Ttk Combobox")
        self.label = ttk.Label(self, text="Пожалуйста, выберите дату и маршрут")
   
        self.combo = ttk.Combobox(self, values=colors)
        self.label.pack(pady=10)
   
        self.combo.pack(side=tk.LEFT, padx=10, pady=5)
       
       
        self.button = tk.Button(self, text="Формирование",
                             command=self.display_color)      
        self.button.pack(pady=5, ipadx=2, ipady=2)
        #---начальное значение комбобокса--------------------------------
        self.combo.current(1)
        #--------------------------------------------------------
    def display_color(self, *args):
        color = self.combo.get()
        #print("Ваш выбор", color)
        # проверка на пустое значение комбобокса
        if not color:
            color="Введите номер маршрута из списка!"
            print(color)
        else:
            print(color)
        from datetime import date
        import calendar
 
        from datetime import date
       
       
        import calendar
   
        my_date = color
        t=calendar.day_name[my_date.weekday()]  #'Wednesday'
        print(t)
    def clear_color(self):
        self.combo.set("")
class App(tk.Tk):
    def __init__(self):
        super().__init__()
        #btn_info = tk.Button(self, text="Печать графика заездов на неделю", bg='turquoise1',
        #                     command=self.destroy)      
        btn_info2 = tk.Button(self, text="Печать графика заездов на день", bg='LightGreen',
                             command=self.open_window)
               
        opts = {'padx': 40, 'pady': 5, 'expand': True, 'fill': tk.BOTH}
        #btn_info.pack(**opts)
        btn_info2.pack(**opts)
       
       
    def open_window(self):
        about = About(self)
        about.grab_set()
if __name__ == "__main__":
    app = App()
    app.mainloop()
xam1816
расскажи про этот метод
 
def display_color(self, *args):
color = self.combo.get()
# print("Ваш выбор", color)
# проверка на пустое значение комбобокса
if not color:
color = "Введите номер маршрута из списка!"
print(color)
else:
print(color)
from datetime import date
import calendar

from datetime import date

import calendar

my_date = color
t = calendar.day_name[my_date.weekday()] # 'Wednesday'

почему названо color? я со стороны читаю и не понимаю что за цвет
jmj26
color - просто переменная, можно было назвать как угодно. Вопрос в том, что мне почему-то не удается получить день недели по выбранной дате…
xam1816
jmj26
можно было назвать как угодно.
оу,оу полегче, названия даешь не для компьютера, ему точно все равно, их даешь для себя и для других. Код должен комментировать сам себя

  
        def display_date(self, *args):
        date = self.combo.get()
  
        if not date:
            date = "Введите номер маршрута из списка!"
            print(date)
        else:
            print(date)
        weekday = datetime.datetime.strptime(date, '%d-%m-%Y').strftime('%A')
        print(weekday)

или вот полностью

  
import tkinter as tk
import tkinter.ttk as ttk
from datetime import timedelta
import datetime
today = datetime.datetime.today()
timedelta(days=1)
n = datetime.datetime.today() + timedelta(days=1)
m = datetime.datetime.today() + timedelta(days=2)
p = datetime.datetime.today() + timedelta(days=3)
colors = (today.strftime("%d-%m-%Y"), n.strftime("%d-%m-%Y"), m.strftime("%d-%m-%Y"), p.strftime("%d-%m-%Y"))
class About(tk.Toplevel):
    def __init__(self, parent):
        super().__init__()
        self.title("Ttk Combobox")
        self.label = ttk.Label(self, text="Пожалуйста, выберите дату и маршрут")
        self.combo = ttk.Combobox(self, values=colors)
        self.label.pack(pady=10)
        self.combo.pack(side=tk.LEFT, padx=10, pady=5)
        self.button = tk.Button(self, text="Формирование",
                                command=self.display_date)
        self.button.pack(pady=5, ipadx=2, ipady=2)
        # ---начальное значение комбобокса--------------------------------
        self.combo.current(1)
        # --------------------------------------------------------
    def display_date(self, *args):
        date = self.combo.get()
        if not date:
            date = "Введите номер маршрута из списка!"
            print(date)
        else:
            print(date)
        weekday = datetime.datetime.strptime(date, '%d-%m-%Y').strftime('%A')
        print(weekday)
    def clear_color(self):
        self.combo.set("")
class App(tk.Tk):
    def __init__(self):
        super().__init__()
        # btn_info = tk.Button(self, text="Печать графика заездов на неделю", bg='turquoise1',
        #                     command=self.destroy)
        btn_info2 = tk.Button(self, text="Печать графика заездов на день", bg='LightGreen',
                              command=self.open_window)
        opts = {'padx': 40, 'pady': 5, 'expand': True, 'fill': tk.BOTH}
        # btn_info.pack(**opts)
        btn_info2.pack(**opts)
    def open_window(self):
        about = About(self)
        about.grab_set()
if __name__ == "__main__":
    app = App()
    app.mainloop()

на русском
  
    def display_date(self, *args):
        date = self.combo.get()
        if not date:
            date = "Введите номер маршрута из списка!"
            print(date)
        else:
            print(date)
        days = ['понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье']
        date_obj = datetime.datetime.strptime(date, '%d-%m-%Y')
        print(days[date_obj.weekday()])
jmj26
Спасибо огромное! Всё получилось!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB