Warum wird die aktuelle Datumsnummer nicht in einem Tkcalendar angezeigt, das nur auf ausgewählte Montagwochentage beschPython

Python-Programme
Anonymous
 Warum wird die aktuelle Datumsnummer nicht in einem Tkcalendar angezeigt, das nur auf ausgewählte Montagwochentage besch

Post by Anonymous »

Ich habe einen TKCalendar erstellt, um den Benutzer einzuschränken, indem ich nur die Auswahl von Montags aktiviert habe. (Der Code basiert auf Code, das zuvor von J_4321 eingereicht wurde und die Auswahl von Mittwochs und Freitags ermöglichte.) Wenn der TKCalendar angezeigt wird, ist das Standardfeld "Standard) des Standards leer (kein Tag der Monatsnummer). Wenn ich auf ein Montagsdatum klicke (die einzige Auswahl möglich), wird die Auswahl hervorgehoben, und das aktuelle Datumsfeld zeigt jetzt die richtige Nummer an. Ist es auch möglich, dass die aktuelle Datumsnummer als mutige Schriftart angezeigt wird (und weiterhin als mutig angezeigt wird, egal auf welche andere Auswahl, auf die der Benutzer klickt)?

Code: Select all

import tkinter as tk
import tkcalendar as tkc
import calendar

class MyCalendar(tkc.Calendar):
def __init__(self, master=None, allowed_weekdays=(calendar.MONDAY,), **kw):
self._select_only = allowed_weekdays
tkc.Calendar.__init__(self, master, **kw)
# change initially selected day if not right day
if self._sel_date and not (self._sel_date.isoweekday() - 1) in allowed_weekdays:
year, week, wday = self._sel_date.isocalendar()
# get closest weekday
next_wday = max(allowed_weekdays, key=lambda d: (d - wday + 1) > 0) + 1
sel_date = self.date.fromisocalendar(year, week + int(next_wday < wday), next_wday)
print("sel_date: ", sel_date)
self.selection_set(sel_date)

def _display_calendar(self):
# display calendar
tkc.Calendar._display_calendar(self)
# disable not allowed days
for i in range(6):
for j in range(7):
if j in self._select_only:
continue
self._calendar[i][j].state(['disabled'])

root = tk.Tk()
root.title("Select a Monday date:")
# I had to select TUESDAY instead of MONDAY because I reordered the weeks starting on Sun instead of Mon
cal = MyCalendar(root, firstweekday='sunday', allowed_weekdays=(calendar.TUESDAY,), selectmode='day', locale='en_US',
font='Arial 14', showweeknumbers=False, showothermonthdays = False, weekendbackground='white',
weekendforeground='black', othermonthbackground='gray95', othermonthwebackground='gray95',
othermonthforeground='black', othermonthweforeground='black')
cal.pack()

root.mainloop()
tkcalendar1
tkcalendar2

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post