想了解如何在tkcalendar的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于Python中获取DateEntry的选定日期?的相关问题,此外,我们还将为您介绍关于3.3.日期与时间类(D
想了解如何在tkcalendar的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于Python中获取DateEntry的选定日期?的相关问题,此外,我们还将为您介绍关于3.3. 日期与时间类(Date、Calendar、LocalDate等)、android – 如何删除QCalendarWidget中的选定日期矩形和小部件中的小图标、AndroidStudio Calendar.get(Calendar.DAY_OF_MONTH)nullPointer异常、cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);会产生异常数据。的新知识。
本文目录一览:- 如何在tkcalendar(Python)中获取DateEntry的选定日期?(python获取指定日期)
- 3.3. 日期与时间类(Date、Calendar、LocalDate等)
- android – 如何删除QCalendarWidget中的选定日期矩形和小部件中的小图标
- AndroidStudio Calendar.get(Calendar.DAY_OF_MONTH)nullPointer异常
- cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);会产生异常数据。
如何在tkcalendar(Python)中获取DateEntry的选定日期?(python获取指定日期)
我有一个tkcalendar,它是Calendar,DateEntry的预定义小部件,并试图获取 用户为DateEntry选择的日期。
尽管提供了使用 “ selection_get()” 为“日历”窗口小部件提取所选日期的规定,但没有为我找到的DateEntry提取任何日期。
我已经尝试过get_date(),get(), date(),cget(),.
selection()等等,但是它们似乎没有返回/打印用户选择的日期。请帮忙,如果需要补充信息,请告诉我
代码[摘自一个简单的tkcalendar教程]:
import tkinter as tkfrom tkinter import ttkfrom tkcalendar import Calendar, DateEntrydef calendar_view(): def print_sel(): print(cal.selection_get()) top = tk.Toplevel(root) cal = Calendar(top, font="Arial 14", selectmode=''day'', cursor="hand1", year=2018, month=2, day=5) cal.pack(fill="both", expand=True) ttk.Button(top, text="ok", command=print_sel).pack()def dateentry_view(): top = tk.Toplevel(root) ttk.Label(top, text=''Choose date'').pack(padx=10, pady=10) cal = DateEntry(top, width=12, background=''darkblue'', foreground=''white'', borderwidth=2) cal.pack(padx=10, pady=10) print(cal.cget(DateEntry))root = tk.Tk()s = ttk.Style(root)s.theme_use(''clam'')ttk.Button(root, text=''Calendar'', command=calendar_view()).pack(padx=10, pady=10)ttk.Button(root, text=''DateEntry'', command=dateentry_view()).pack(padx=10, pady=10)root.mainloop()
答案1
小编典典您提到您已经尝试过了get_date()
,但是没有用,但这实际上是正确的功能。
import tkinter as tkfrom tkinter import ttkfrom tkcalendar import Calendar, DateEntrydef calendar_view(): def print_sel(): print(cal.selection_get()) top = tk.Toplevel(root) cal = Calendar(top, font="Arial 14", selectmode=''day'', cursor="hand1", year=2018, month=2, day=5) cal.pack(fill="both", expand=True) ttk.Button(top, text="ok", command=print_sel).pack()def dateentry_view(): def print_sel(): print(cal.get_date()) top = tk.Toplevel(root) ttk.Label(top, text=''Choose date'').pack(padx=10, pady=10) cal = DateEntry(top, width=12, background=''darkblue'', foreground=''white'', borderwidth=2) cal.pack(padx=10, pady=10) ttk.Button(top, text="ok", command=print_sel).pack()root = tk.Tk()s = ttk.Style(root)s.theme_use(''clam'')ttk.Button(root, text=''Calendar'', command=calendar_view).pack(padx=10, pady=10)ttk.Button(root, text=''DateEntry'', command=dateentry_view).pack(padx=10, pady=10)root.mainloop()
如果要在每次更改日期时获取日期,则可以使用事件绑定。从文档中:
- 虚拟活动
<<CalendarSelected>>
每次用户用鼠标选择一天时都会生成一个事件。
因此,您可以将获取日期的函数绑定到<<CalendarSelected>>
事件:
def dateentry_view(): def print_sel(e): print(cal.get_date()) top = tk.Toplevel(root) ttk.Label(top, text=''Choose date'').pack(padx=10, pady=10) cal = DateEntry(top, width=12, background=''darkblue'', foreground=''white'', borderwidth=2) cal.pack(padx=10, pady=10) cal.bind("<<DateEntrySelected>>", print_sel)
3.3. 日期与时间类(Date、Calendar、LocalDate等)
在Java中,我们经常需要处理日期和时间。Java提供了一些类来帮助我们完成这些任务,如Date
、Calendar
、LocalDate
、LocalTime
、LocalDateTime
和ZonedDateTime
等。我们将分别介绍这些类,并给出相应的示例。
1. Date类
Date
类是Java提供的一个表示日期和时间的类。但是,由于设计上的缺陷,许多方法已经被废弃。因此,我们更推荐使用Calendar
类和Java 8中引入的新的日期时间API。
以下是Date
类的一些常用方法:
Date()
:构造一个表示当前日期和时间的Date
对象。getTime()
:返回自1970年1月1日0时0分0秒以来的毫秒数。
2. Calendar类
Calendar
类是一个抽象类,它提供了一些方法来操作日期和时间。Calendar
类的子类如GregorianCalendar
,它表示公历日期。Calendar
类的常用方法有:
getInstance()
:返回一个表示当前日期和时间的Calendar
对象。get(int field)
:返回指定字段的值。set(int field, int value)
:设置指定字段的值。add(int field, int amount)
:给指定字段添加指定的值。getTime()
:返回表示Calendar
对象的日期和时间的Date
对象。
以下是Calendar
类的一些常量:
YEAR
:年MONTH
:月DATE
:日HOUR
:小时(12小时制)HOUR_OF_DAY
:小时(24小时制)MINUTE
:分SECOND
:秒
3. LocalDate、LocalTime、LocalDateTime和ZonedDateTime类
Java 8引入了新的日期时间API,包括LocalDate
、LocalTime
、LocalDateTime
和ZonedDateTime
等类。这些类是不可变的,线程安全的,并且设计上更符合实际需求。
以下是这些类的一些常用方法:
now()
:返回表示当前日期或时间的对象。of(...)
:根据指定的参数创建对象。plusDays(long daysToAdd)
:返回增加指定天数后的对象。minusDays(long daysToSubtract)
:返回减去指定天数后的对象。plusHours(long hoursToAdd)
:返回增加指定小时数后的对象。minusHours(long hoursToSubtract)
:返回减去指定小时数后的对象。format(DateTimeFormatter formatter)
:使用指定的格式化器将对象格式化为字符串。
4. 示例
下面是一个使用日期和时间类的示例:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// 使用Date类
Date date = new Date();
System.out.println("当前日期和时间:" + date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("格式化后的日期和时间:" + sdf.format(date));
// 使用Calendar类
Calendar calendar = Calendar.getInstance();
System.out.println("年:" + calendar.get(Calendar.YEAR));
System.out.println("月:" + (calendar.get(Calendar.MONTH) + 1)); // 月份从0开始,所以需要加1
System.out.println("日:" + calendar.get(Calendar.DATE));
System.out.println("小时:" + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("分钟:" + calendar.get(Calendar.MINUTE));
System.out.println("秒:" + calendar.get(Calendar.SECOND));
// 使用LocalDate、LocalTime和LocalDateTime类
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("当前日期:" + localDate);
System.out.println("当前时间:" +localTime);
System.out.println("当前日期和时间:" + localDateTime);
// 使用ZonedDateTime类
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("当前日期和时间(带时区):" + zonedDateTime);
// 格式化日期和时间
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("格式化后的日期和时间:" + localDateTime.format(formatter));
// 日期和时间的计算
LocalDate tomorrow = localDate.plusDays(1);
System.out.println("明天的日期:" + tomorrow);
LocalTime oneHourLater = localTime.plusHours(1);
System.out.println("一小时后的时间:" + oneHourLater);
LocalDateTime oneWeekLater = localDateTime.plusDays(7);
System.out.println("一周后的日期和时间:" + oneWeekLater);
}
}
执行以上代码,将输出类似如下的结果:
当前日期和时间:Tue May 30 15:23:45 CST 2023
格式化后的日期和时间:2023-05-30 15:23:45
年:2023
月:5
日:30
小时:15
分钟:23
秒:45
当前日期:2023-05-30
当前时间:15:23:45.123456789
当前日期和时间:2023-05-30T15:23:45.123456789
当前日期和时间(带时区):2023-05-30T15:23:45.123456789+08:00[Asia/Shanghai]
格式化后的日期和时间:2023-05-30 15:23:45
明天的日期:2023-05-31
一小时后的时间:16:23:45.123456789
一周后的日期和时间:2023-06-06T15:23:45.123456789
以上就是Java常用类库中的日期与时间类的简介和示例。希望这些内容能帮助你理解和使用这些类。如果有任何疑问,请随时提问,我会尽力帮助你。
参考文章:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g
android – 如何删除QCalendarWidget中的选定日期矩形和小部件中的小图标
我正在编写自己的QCalendarWidget实现.我希望日期可以选择,但我不想看默认选择矩形.它看起来像这样:
我的代码:
in constructor: setSelectionMode(SingleSelection);
void ShiftCalendar::paintCell(QPainter *painter, const QRect &rect, const QDate &date) const
{
if(date == selectedDate()) {
fillCell(painter, rect, CalendarWidget::cellFillColor);
}
drawCellText(painter, rect, QString::number(date.day()), color);
}
void ShiftCalendar::fillCell(QPainter *painter, const QRect &rect, const QColor &color) const
{
painter->save();
painter->setRenderHint(QPainter::Antialiasing);
painter->setPen(QPen(color));
painter->setBrush(QBrush(color));
painter->drawEllipse(fRect.center(), rect.width() / 2, rect.height() / 2);
painter->restore();
}
我能做什么?
图中可以看到的第二个问题是按钮图标和组合框图标的小尺寸.它在桌面上看起来很好,但在Android上它一直很小.修改图标大小没有任何效果.
编辑:
添加selection-background-color解决了第一个问题:rgba(0,0,0,0);小部件的样式表.第二个仍未解决.
解决方法:
QAbstractItemView *view = findChild<QAbstractItemView*>();
if(view) {
view->setItemDelegate(//inherit QItemDelegate and override paint event);
}
AndroidStudio Calendar.get(Calendar.DAY_OF_MONTH)nullPointer异常
我的日历有问题。这是代码:
Calendar mCalendar = Calendar.getInstance();mToday[0] = mCalendar.get(Calendar.DAY_OF_MONTH);mToday[1] = mCalendar.get(Calendar.MONTH); // zero basedmToday[2] = mCalendar.get(Calendar.YEAR);
不能运行我的项目,因为在AndroidStudio显示错误Calendar.DAY_OF_MONTH
,Calendar.MONTH
等…我得到nullPointException在模拟器运行时
它说
必须是以下之一:java.util.Calendar.DAY_OF_MONTHjava.util.Calendar.MONTH等…
我不明白此错误,因为它Calendar.MONTH
是其中之一java.util.calendar.MONTH
我有进口
import java.util.Calendar;
对不起,我错过了它的初始化,但是还有另一个我想使用Calendar.MONTH的类,如下所示:
mCalendarToday = Calendar.getInstance();...int dayOfWeek = mCalendar.get(Calendar.DAY_OF_WEEK);int firstDay = getDay(mCalendar.get(Calendar.DAY_OF_WEEK);
要么
private Calendar mCalendarToday;...private boolean isToday(int day, int month, int year) { if (mCalendarToday.get(Calendar.MONTH) == month && mCalendarToday.get(Calendar.YEAR) == year && mCalendarToday.get(Calendar.DAY_OF_MONTH) == day) { return true; } return false;}
这里也显示错误。还有我要使用的所有其他行。
答案1
小编典典看起来像是Android Studio的错误:0.5.5
参见http://code.google.com/p/android/issues/detail?id=68758
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);会产生异常数据。
<p><a href="http://static.oschina.net/uploads/img/201307/27011628_B4oK.jpg"><imgtitle="QQ图片20130727010711" border="0" alt="QQ图片20130727010711" src="http://static.oschina.net/uploads/img/201307/27011629_m5NE.jpg" width="438" height="226" /></a><a href="http://static.oschina.net/uploads/img/201307/27011809_NGZL.jpg"><imgtitle="QQ图片20130727010658" border="0" alt="QQ图片20130727010658" src="http://static.oschina.net/uploads/img/201307/27011810_Mk9e.jpg" width="391" height="233" /></a></p> <p> </p> <p>右边的图输出的结果是有问题,理应输出的结果为  2018-12-24,查阅了资料以后发现 ,这算是JDK(准确地说是 GregorianCalendar)的一个bug(或是不方便之处)。</p> <p>jdk的bug系统里面有人提过这样的bug,但是好像处理结果挺奇怪的。见 <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6289214">JDK-6289214 : (cal) Calendar returns bad values if a first get is not call before a set of a weekday</a></p> <p>其中提出问题者使用的代码为:</p> <p><a href="http://static.oschina.net/uploads/img/201307/27011632_4bbz.png"><imgtitle="image" border="0" alt="image" src="http://static.oschina.net/uploads/img/201307/27011634_Bejx.png" width="477" height="250" /></a></p> <p>JDK官方给出的诊断方案为:  简单地概括成一句话就是:在set(DAY_OF_WEEK)方法之前先调用一个get方法,例如 cal.get(Calendar.DAY_OF_WEEK);</p> <p><a href="http://static.oschina.net/uploads/img/201307/27011634_nUd1.png"><imgtitle="image" border="0" alt="image" src="http://static.oschina.net/uploads/img/201307/27011636_NowQ.png" width="611" height="183" /></a></p> <p> </p> <p><font color="#ff0000">另: Calendar cal = Calendar.getInstance();  得到的 cal 对象 其实是子类 GregorianCalendar  类型的。</font></p>
我们今天的关于如何在tkcalendar和Python中获取DateEntry的选定日期?的分享已经告一段落,感谢您的关注,如果您想了解更多关于3.3. 日期与时间类(Date、Calendar、LocalDate等)、android – 如何删除QCalendarWidget中的选定日期矩形和小部件中的小图标、AndroidStudio Calendar.get(Calendar.DAY_OF_MONTH)nullPointer异常、cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);会产生异常数据。的相关信息,请在本站查询。
本文标签: