class Date(QWidget): def __init__(self): super(Date, self).__init__() self.calendar = QCalendarWidget(self) self.calendar.setMinimumDate(QDate(1946, 2, 14)) # 2 self.calendar.setMaximumDate(QDate(6666, 6, 6)) # 3 # self.calendar.setDateRange(QDate(1946, 2, 14), QDate(6666, 6, 6)) # self.calendar.setFirstDayOfWeek(Qt.Monday) # 4 # self.calendar.setSelectedDate(QDate(1946, 2, 14)) # 5 self.calendar.setGridVisible(True) # 6 self.calendar.clicked.connect(self.show_emotion_func) # 6 print(self.calendar.minimumDate()) # 7 print(self.calendar.maximumDate()) print(self.calendar.selectedDate()) self.label = QLabel(self) # 8 self.label.setAlignment(Qt.AlignCenter) weekday = self.calendar.selectedDate().toString('ddd') # 9 self.label.setText(EMOTION[weekday]) self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.calendar) self.v_layout.addWidget(self.label) self.setLayout(self.v_layout) self.setWindowTitle('QCalendarWidget') def show_emotion_func(self): # 10 weekday = self.calendar.selectedDate().toString('ddd') self.label.setText(EMOTION[weekday])
class Example(QWidget): def __init__(self): super(Example, self).__init__() self.initUI() def initUI(self): self.slider = QSlider(Qt.Horizontal, self) self.slider.valueChanged.connect(self.printSlider) self.cb = QCheckBox('Show title', self) self.cb.move(0, 50) self.cb.stateChanged.connect(self.printCB) self.toggle = QPushButton("Hello", self) self.toggle.move(0, 100) self.toggle.setCheckable(True) self.toggle.toggled.connect(self.printToggle) self.cal = QCalendarWidget(self) self.cal.setGridVisible(True) self.cal.move(0, 150) self.cal.clicked.connect(self.printDate) self.setGeometry(300, 300, 600, 400) self.setWindowTitle('Animation') self.show() def paintEvent(self, e): qp = QPainter() qp.begin(self) self.draw(qp) qp.end() def draw(self, qp): qp.setPen(QColor(0, 0, 0)) qp.setBrush(QColor(255, 255, 255)) qp.drawRect(0, 0, self.width(), self.height()) def printSlider(self): print self.slider.value() def printCB(self): print self.cb.checkState() def printToggle(self, onoff): print onoff def printDate(self, date): #print date print self.cal.selectedDate()
class CalendarDialog(QDialog): def __init__(self, xlim): super(CalendarDialog, self).__init__() self.initUI(xlim) def initUI(self, xlim): Vl = QVBoxLayout() Grid = QGridLayout() ## number of Headerlines Grid.addWidget(QLabel('Select start time'), 0, 0) Grid.addWidget(QLabel('Select end time'), 0, 1) xs = num2date(xlim[0]) xt = num2date(xlim[1]) xmin = QDate(xs.year, xs.month, xs.day) xmax = QDate(xt.year, xt.month, xt.day) self.tstart = QCalendarWidget() self.tstart.setDateRange(xmin, xmax) self.tstart.setSelectedDate(xmin) self.tend = QCalendarWidget() self.tend.setDateRange(xmin, xmax) self.tend.setSelectedDate(xmax) Grid.addWidget(self.tstart, 1, 0) Grid.addWidget(self.tend, 1, 1) Vl.addLayout(Grid) self.buttons = QDialogButtonBox() self.ok_button = self.buttons.addButton(self.buttons.Ok) self.buttons.addButton(self.buttons.Cancel) self.buttons.accepted.connect(self.accept) self.buttons.rejected.connect(self.closeWindow) Vl.addWidget(self.buttons) self.setLayout(Vl) self.setWindowTitle('Select time') self.setGeometry(300, 300, 250, 150) self.show() def getResults(self): if self.exec_() == QDialog.Accepted: # get all values tstart = self.tstart.selectedDate().getDate() tend = self.tend.selectedDate().getDate() return tstart, tend else: return None def closeWindow(self): self.close() return None
def home(self): """ Home page of the App. """ # Create and display calendar object. calendar = QCalendarWidget(self) calendar.setGridVisible(True) calendar.move(20, 50) calendar.resize(320, 200) calendar.setMinimumDate(QtCore.QDate(1995, 6, 16)) calendar.setMaximumDate(QtCore.QDate.currentDate()) calendar.clicked[QtCore.QDate].connect(self.get_apod_date) # Get date selected by calendar object and change date to desired # format. (YYMMDD) date = calendar.selectedDate() a_date = [int(str(date.year())[2:]), date.month(), date.day()] self.astro_date = ''.join(list(map(str, a_date))) # Create "See Picture" button. Connect it to get_picture function. see_button = QPushButton("See Picture", self) see_button.move(20, 280) see_button.clicked.connect(self.get_picture) # Display all objects in the window. self.show()
def initUI(self): vbox = QVBoxLayout(self) # 创建一个横向布局 cal = QCalendarWidget(self) # 创建一个QCalendarWidget cal.setGridVisible(True) # 设置网格可见 # 从窗口组件中选定一个日期,会发射一个QCore.QDate信号 cal.clicked[QDate].connect( self.showDate) # clicked[QDate]说明点击信号发出,会带有一个QDate参数, 就要求槽函数也要有形参 # 选择一个日期时, QDate的点击信号就触发了, # 把这个信号和我们自己定义的showDate()方法关联起来 # 并且传入一个QDate类型的参数(即当前选中的日期) vbox.addWidget(cal) # 自动在底部标签栏显示当前日期的信息 self.lbl = QLabel(self) # 设置日历的最小日期 # self.cal.setMinimumDate(QDate(1980,1,1)) # cal.setSelectedDate(QDate(1980,1,1)) 设置选取的日期 date = cal.selectedDate() # 使用selectedDate()方法获取选中的日期, 默认当前日期 self.lbl.setText(date.toString()) # 然后把日期对象转成字符串, 在标签栏里面显示出来 vbox.addWidget(self.lbl) # 布局中加入标签控件 self.setLayout(vbox) # 设置布局 self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Calendar') self.show()
def show_calendar(self, date_initial: 'QDate'): """ Calendar widget to select date from :return: None """ self.cal_widget = QWidget() self.cal_widget.setWindowModality(Qt.ApplicationModal) self.cal_widget.main_layout = QGridLayout(self.cal_widget) self.cal_widget.setWindowTitle('Calendar') self.cal_widget.setLayout(self.cal_widget.main_layout) cal = QCalendarWidget(self.cal_widget) cal.setGridVisible(True) cal.setSelectedDate(date_initial) self.cal_widget.main_layout.addWidget(cal, 0, 0) cal.clicked[QtCore.QDate].connect(self.showDate) button_set = QPushButton( QApplication.style().standardIcon( QtWidgets.QStyle.SP_DialogOkButton), " Set", self.cal_widget) button_set.clicked.connect(partial(self.set_date, cal)) self.cal_widget.main_layout.addWidget(button_set, 1, 1) self.cal_widget.lbl = QLabel(self.cal_widget) self.cal_widget.main_layout.addWidget(self.cal_widget.lbl, 1, 0) self.showDate(cal.selectedDate()) self.cal_widget.show()
def initUI(self): self.setWindowTitle('进度条示例') self.setWindowIcon(QIcon('./res/apaki.ico')) self.setGeometry(400, 300, 400, 300) self.pbar = QProgressBar(self) self.btn = QPushButton("开始下载", self) self.btn.clicked.connect(self.doAction) self.timer = QBasicTimer() self.step = 0 # ------------------------------------------------- cal = QCalendarWidget(self) cal.clicked[QDate].connect(self.showData) date = cal.selectedDate() self.label = QLabel(self) self.label.setText(date.toString()) grid = QGridLayout(self) grid.addWidget(self.pbar, 0, 1) grid.addWidget(self.btn, 0, 0) grid.addWidget(self.label, 2, 0, 1, 2) grid.addWidget(cal, 3, 0, 1, 2) self.setLayout(grid)
def initUI(self): vbox = QVBoxLayout(self) cal = QCalendarWidget(self) cal.setGridVisible(True) cal.clicked[QDate].connect(self.showDate) vbox.addWidget(cal) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) #lbl contains the date of the selected day vbox.addWidget(self.lbl) self.setLayout(vbox) reminderbutton = QPushButton("Check For Reminder", self) reminderbutton.move(120, 990) reminderbutton.resize(175, 25) addbutton = QPushButton("Add Reminder", self) addbutton.move(300, 990) addbutton.resize(175, 25) temporary = LabelAndButtonWork() self.lbls = self.lbl.text() reminderbutton.clicked.connect(lambda: temporary.CheckForReminder( temporary.GetWordsForLabel(self.lbls))) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Calendar') self.show()
class DatePopup(QDialog): def __init__(self): super(Qt.Popup, self).__init__() self.setSizeGripEnabled(False) self.resize(260, 230) self.widget = QWidget(self) self.widget.setObjectName(QtCore.QString.fromUtf8("self.widget")) self.widget.setGeometry(QRect(0, 10, 258, 215)) self.verticalLayout = QVBoxLayout(self.widget) self.verticalLayout.setObjectName( QtCore.QString.fromUtf8("self.verticalLayout")) self.verticalLayout.setContentsMargins(0, 0, 0, 0) self.calendarWidget = QCalendarWidget(self.widget) self.calendarWidget.setObjectName( QtCore.QString.fromUtf8("calendarWidget")) self.verticalLayout.addWidget(self.calendarWidget) self.buttonBox = QDialogButtonBox(self.widget) self.buttonBox.setObjectName(QtCore.QString.fromUtf8("self.buttonBox")) self.buttonBox.setOrientation(Qt.Horizontal) self.buttonBox.setStandardButtons(QDialogButtonBox.Cancel | QDialogButtonBox.Ok) self.verticalLayout.addWidget(self.buttonBox) QObject.self.buttonBox.accepted.connect(self.accept) QObject.self.buttonBox.rejected.connect(self.reject) def selected_date(self): return self.calendarWidget.selectedDate()
class Example(QWidget): def __init__(self): super().__init__() self.vbox = QVBoxLayout(self) self.cal = QCalendarWidget(self) self.cal.setGridVisible(True) self.cal.clicked[QDate].connect(self.showDate) self.vbox.addWidget(self.cal) self.lbl = QLabel(self) date = self.cal.selectedDate() self.lbl.setText(date.toString()) self.vbox.addWidget(self.lbl) self.setLayout(self.vbox) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Calendar') self.show() def showDate(self, date): self.lbl.setText(date.toString())
def initUI(self): vbox = QVBoxLayout(self) cal = QCalendarWidget(self) cal.setGridVisible(True) # what is the difference between setting true and false??? cal.clicked[QDate].connect(self.showData) # If we select a date from the widget, a clicked[QDate] signal # is emitted. # We connect this signal to the user defined showDate() method. vbox.addWidget(cal) self.lbl = QLabel(self) date = cal.selectedDate() # the default date is today self.lbl.setText(date.toString()) vbox.addWidget(self.lbl) self.setLayout(vbox) self.setGeometry(300, 300, 350, 300) self.setWindowTitle("Calendar") self.show()
class MyCalendarWidget(QWidget): updated_date = pyqtSignal(date, name='updated_date') def __init__(self, name=None, parent=None): super().__init__(parent) self.name = name self.cal = QCalendarWidget(self) initial_date = QDate.currentDate().addDays(-1) self.cal.setSelectedDate(initial_date) self.cal.setGridVisible(True) self.cal.clicked[QDate].connect(self.show_date) self.text_area = QLabel(self) date = self.cal.selectedDate() self.text_area.setText(date.toString()) hbox_layout = QHBoxLayout() hbox_layout.addWidget(self.cal) vbox_layout = QVBoxLayout() vbox_layout.addLayout(hbox_layout) vbox_layout.addWidget(self.text_area) self.setLayout(vbox_layout) def show_date(self, date): self.updated_date.emit(date.toPyDate()) self.text_area.setText(date.toString())
class WindowCalendar(QDialog): def __init__(self, date): self.date = date super().__init__() #window requrements like geometry,icon and title self.setGeometry(200, 200, 400, 200) self.setWindowTitle("Calendar") # self.setWindowIcon(QIcon("python.png")) vbox = QVBoxLayout() self.calendar = QCalendarWidget() self.calendar.setGridVisible(True) self.calendar.selectionChanged.connect(self.calendar_date) self.label = QPushButton("Confirm") self.label.setFont(QFont("Sanserif", 12)) # self.label.setStyleSheet('color:red') vbox.addWidget(self.calendar) vbox.addWidget(self.label) self.setLayout(vbox) self.label.clicked.connect(self.hide) def calendar_date(self): dateselected = self.calendar.selectedDate() date_in_string = str(dateselected.toPyDate()) self.date.setText(date_in_string)
def initUI(self): VBox = QVBoxLayout() calendar = QCalendarWidget(self) calendar.setGridVisible(True) # calendar.move(20, 20) calendar.clicked[QDate].connect(self.showDate) label = QLabel(self) date = calendar.selectedDate() label.setText(self.getDate(date)) # label.move(130, 260) label.setAlignment(Qt.AlignCenter) self.label = label self.calendar = calendar Hbox = QHBoxLayout() VBox.addWidget(calendar, 5) VBox.addWidget(label, 1) self.setLayout(VBox) buttons = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) # 窗口中建立确认和取消按钮 VBox.addWidget(buttons) buttons.accepted.connect(self.accept) buttons.rejected.connect(self.reject) self.resize(350, 300) self.center() self.setWindowTitle('日历控件') self.show()
class App(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): grid = QGridLayout() self.cal = QCalendarWidget() self.cal.clicked[QDate].connect(self.showDate) self.lbl = QLabel(self) date = self.cal.selectedDate() self.lbl.setText(date.toString()) grid.addWidget(self.cal, 1, 0, 5, 0) grid.addWidget(self.lbl, 6, 0) self.setLayout(grid) self.setGeometry(400, 500, 400, 500) self.setWindowTitle('Q-calender') self.show() def showDate(self, date): self.lbl.setText(date.toString())
def initUI(self): cal = QCalendarWidget(self) cal.setGridVisible(True) cal.clicked[QDate].connect(self.showDate) # QCalenderWidget의 객체(cal)를 하나 만듭니다. # setGridVisible(True)로 설정하면, 날짜 사이에 그리드가 표시됩니다. # 날짜를 클릭했을 때 showDate 메서드가 호출되도록 연결해줍니다. self.lbl = QLabel(self) date = cal.selectedDate() # selectedDate는 현재 선택된 날짜 정보를 갖고 있습니다. (디폴트는 현재 날짜) # # 현재 날짜 정보를 라벨에 표시되도록 해줍니다. self.lbl.setText(date.toString()) vbox = QVBoxLayout() vbox.addWidget(cal) vbox.addWidget(self.lbl) # 수직 박스 레이아웃을 이용해서, 달력과 라벨을 수직으로 배치해줍니다. self.setLayout(vbox) self.setWindowTitle('QCalendarWidget') self.setGeometry(300, 300, 400, 300) self.show()
class WindowClass(QWidget): def __init__(self, parent=None): super(WindowClass, self).__init__(parent) self.btn = QPushButton(self) #self参数则让该按钮显示当前窗体中 self.btn.setText("选择日期") self.btn.move(0, 0) self.btn.clicked.connect(self.openCalendar) self.le = QLabel(self) self.cal = QCalendarWidget(self) self.cal.setMinimumDate(QDate(2017, 1, 1)) #设置日期最小范围 self.cal.setMaximumDate(QDate(2019, 12, 30)) #设置日期最大范围 self.cal.setGridVisible(True) #是否显示日期之间的网格 self.cal.move(5, 30) self.cal.hide() #隐藏日期控件 self.cal.clicked[QDate].connect( self.showDate) #clicked[参数],即定义showDate是传入的参数类型设置 date = self.cal.selectedDate() #获取选中日期,默认当前系统时间 self.le.setText(date.toString('yyyy-MM-dd dddd')) self.le.move(100, 8) self.setGeometry(100, 100, 400, 350) #设置当前窗体位置和大小 self.setWindowTitle("日历控件使用") def showDate(self, date): self.le.setText(date.toString("yyyy-MM-dd dddd")) self.cal.close() #关闭日期控件 def openCalendar(self): self.cal.show() #显示日期控件
def initUI(self): """初始化UI界面""" # 创建 box layout vbox = QVBoxLayout(self) cal = QCalendarWidget(self) cal.setGridVisible(True) cal.clicked[QDate].connect(self.showDate) vbox.addWidget(cal) self.label = QLabel(self) date = cal.selectedDate() self.label.setText(date.toString()) vbox.addWidget(self.label) self.setLayout(vbox) # window settings self.setGeometry(500, 500, 500, 360) self.setWindowTitle("Calendar") self.show()
class Demo(QWidget): def __init__(self): super(Demo, self).__init__() self.calendar = QCalendarWidget(self) # 通过setMinimumDate()和 # setMaximumDate()可以设置日历的最小和最大日期 # (可用setDateRange()替代),传入的参数为QDate。 self.calendar.setMinimumDate(QDate(1946, 2, 14)) # 2 self.calendar.setMaximumDate(QDate(6666, 6, 6)) # 3 # self.calendar.setDateRange(QDate(1946, 2, 14), QDate(6666, 6, 6)) # self.calendar.setFirstDayOfWeek(Qt.Monday) # 4 # self.calendar.setSelectedDate(QDate(1946, 2, 14)) # 5 # setGridVisible(bool)方法可以设置是否在日历上显示网格; self.calendar.setGridVisible(True) # 6 # 当点击到日历上的某个日期时,clicked信号就会被触发 self.calendar.clicked.connect(self.show_emotion_func) # 6 self.calendar.setFirstDayOfWeek(Qt.Sunday) print(self.calendar.minimumDate()) # 7 print(self.calendar.maximumDate()) print(self.calendar.selectedDate()) self.label = QLabel(self) # 8 self.label.setAlignment(Qt.AlignCenter) # setSelectedDate()方法可以设置日历初始化时所显示的日期 # ,如果不设置,则默认是当天日期; weekday = self.calendar.selectedDate().toString('ddd') # 9 self.label.setText(EMOTION[weekday]) self.v_layout = QVBoxLayout() self.v_layout.addWidget(self.calendar) self.v_layout.addWidget(self.label) self.setLayout(self.v_layout) self.setWindowTitle('QCalendarWidget') def show_emotion_func(self): # 10 weekday = self.calendar.selectedDate().toString('ddd') self.label.setText(EMOTION[weekday])
def init(self): vbox = QVBoxLayout(self) cal = QCalendarWidget(self) cal.setGridVisible(True) cal.clicked.connect(self.showdate) vbox.addWidget(cal) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) vbox.addWidget(self.lbl) self.setLayout(vbox)
def initUI(self): cal = QCalendarWidget(self) cal.setGridVisible(True) cal.move(20, 20) cal.clicked[QDate].connect(self.showDate) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) self.lbl.move(130, 260) self.setGeometry(300, 300, 650, 300) self.setWindowTitle('Calendar') self.show()
def initUI(self): my_calendar = QCalendarWidget(self) my_calendar.setGridVisible(True) my_calendar.move(10, 20) my_calendar.clicked[QDate].connect(self.show_date) self.my_label = QLabel(self) date = my_calendar.selectedDate() self.my_label.setText(date.toString()) self.my_label.move(10, 220) self.setGeometry(100, 100, 320, 240) self.setWindowTitle('Calendar') self.show()
class QCalendarWidgetDemo(QWidget): def __init__(self): super(QCalendarWidgetDemo, self).__init__() self.initUI() def initUI(self): self.setWindowTitle('日历控件测试') self.resize(300, 600) self.cal = QCalendarWidget(self) self.cal.setMinimumDate(QDate(1997, 6, 20)) self.cal.setMaximumDate(QDate(2020, 6, 20)) self.cal.setGridVisible(True) # 设置网格 self.cal.move(20, 20) self.cal.clicked.connect(self.SelectDate) self.label = QLabel(self) self.label.setText(self.cal.selectedDate().toString('yyyy/MM/dd dddd')) self.label.move(20, 300) def SelectDate(self): self.label.setText(self.cal.selectedDate().toString('yyyy/MM/dd dddd'))
class calendarDemo(QWidget): def __init__(self): super(calendarDemo, self).__init__() self.initUI() self.resize(500, 500) def initUI(self): self.cal = QCalendarWidget(self) self.cal.setMinimumDate(QDate(1988, 1, 1)) self.cal.setMaximumDate(QDate(2088, 1, 1)) self.cal.setGridVisible(True) # 以网格形式显示 self.cal.clicked.connect(self.showDate) self.label = QLabel(self) date = self.cal.selectedDate() self.label.setText(date.toString("yyyy-MM-dd dddd")) self.label.move(100, 400) def showDate(self, date): # self.label.setText((date.toString("yyyy-MM-dd dddd"))) self.label.setText( (self.cal.selectedDate().toString("yyyy-MM-dd dddd")))
class MainWindow(QMainWindow): def __init__(self): super().__init__() # 윈도우 설정 self.setGeometry(300, 100, 1200, 800) # x, y, w, h self.setWindowTitle('Canlendar Widget') # CalendarWidget 위젯 화면에 표시 self.cal = QCalendarWidget(self) self.cal.setGeometry(120, 50, 970, 300) self.cal.setGridVisible(True) self.cal.selectionChanged.connect(self.calendar_change) # min max 기간 설정 #self.cal.setMinimumDate(QDate(2020, 8, 25)) #self.cal.setMaximumDate(QDate(2020, 8, 27)) # Calendar 에서 선택한 값 표시할 QLabel self.calendar_label = QLabel(self) self.calendar_label.setGeometry(120, 370, 970, 30) self.calendar_label.setStyleSheet('background-color:#D3D3D3') self.b = QPlainTextEdit(self) self.b.insertPlainText("일기를 작성해요주세용.\n") self.b.setGeometry(120, 420, 970, 200) self.setupUI() def setupUI(self): btn1 = QPushButton("저장", self) btn2 = QPushButton("닫기", self) btn1.setGeometry(450, 650, 80, 30) btn1.clicked.connect(QCoreApplication.instance().quit) btn2.setGeometry(650, 650, 80, 30) btn2.clicked.connect(QCoreApplication.instance().quit) # Calendar Open 함수 @pyqtSlot() def calendar_change(self): cal_date = self.cal.selectedDate() strDate = cal_date.toString('\t\t\t\t\t\t\t\t' + 'yyyy년 ' + 'MM월 ' + 'dd일') # QDate 를 str self.calendar_label.setText(strDate) # 달력에서 현재를 선택 @pyqtSlot() def select_today(self): # self.cal.showToday() # self.cal.showNextMonth() #self.cal.setSelectedDate(QDate()) self.cal.currentPageChanged(self, 2022, 10)
def initUI(self): cal = QCalendarWidget(self) cal.setGridVisible(True) cal.setVerticalHeaderFormat( QCalendarWidget.VerticalHeaderFormat( QCalendarWidget.NoVerticalHeader)) cal.clicked[QDate].connect(self.showDate) # 한국 공휴일 캘린더 객체 생성 후 올해 기준으로 휴일을 3년간 Q캘린터에 표시 wcal = SouthKorea() date = QDate.currentDate() # 해당 연도의 공휴일을 리스트로 반환 # print(wcal.holidays(date.year())) # 공휴일 표시 서식 설정 fm = QTextCharFormat() fm.setForeground(Qt.red) # fm.setBackground(Qt.yellow) # 올해 기준 전년, 올해, 다음해까지 공휴일 표시 for one in wcal.holidays(date.year() - 1): print(one[0]) cal.setDateTextFormat(one[0], fm) for one in wcal.holidays(date.year()): print(one[0]) cal.setDateTextFormat(one[0], fm) for one in wcal.holidays(date.year() + 1): print(one[0]) cal.setDateTextFormat(one[0], fm) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) self.lblmsg = QLabel(self) self.lblmsg.setText("강의 일정 계산") self.showDate(date) vbox = QVBoxLayout() vbox.addWidget(cal) vbox.addWidget(self.lbl) vbox.addWidget(self.lblmsg) self.setLayout(vbox) self.setWindowTitle('종강일 계산기') self.setGeometry(300, 300, 300, 300) self.show()
class VistaListaPrenotazioni(QWidget): def __init__(self, parent=None): super(VistaListaPrenotazioni, self).__init__(parent) self.g_layout = QGridLayout() self.label_prenotazioni_by_data = QLabel("\nSeleziona una data, poi premi 'Vai' per vedere gli arrivi alla data selezionata: \n") self.label_prenotazioni_by_data.setStyleSheet("font: 200 14pt \"Papyrus\";\n""color: rgb(0, 0, 0);\n" "background-color: rgb(178, 225, 255);\n" "selection-color: rgb(170, 255, 0);") self.g_layout.addWidget(self.label_prenotazioni_by_data, 0, 0) self.calendario = QCalendarWidget() self.calendario.setGridVisible(True) self.calendario.setVerticalHeaderFormat(QCalendarWidget.NoVerticalHeader) self.calendario.setMinimumDate(QDate(2021, 6, 1)) self.calendario.setMaximumDate(QDate(2021, 9, 15)) self.g_layout.addWidget(self.calendario, 1, 0) self.h_layout = QHBoxLayout() self.create_button("Mostra tutte", self.go_lista_prenotazioni, "background-color:#FFD800;") self.create_button("Vai", self.go_lista_prenotazioni_by_data, "background-color:#00FF00;") self.g_layout.addLayout(self.h_layout, 2, 0) self.setLayout(self.g_layout) self.resize(700, 600) self.setWindowTitle("Lista Prenotazioni") #Crea un bottone con i parametri passati e lo aggiunge al layout orizzontale dei bottoni def create_button(self, testo, comando, background_color): bottone = QPushButton(testo) bottone.setFont(QFont("Arial", 15, 1, True)) bottone.setStyleSheet(background_color) bottone.clicked.connect(comando) self.h_layout.addWidget(bottone) #Visualizza la lista delle prenotazioni che iniziano nella data selezionata nel calendario def go_lista_prenotazioni_by_data(self): data_inizio_q = self.calendario.selectedDate() self.data_inizio = datetime(data_inizio_q.year(), data_inizio_q.month(), data_inizio_q.day()) self.lista_prenotazioni_by_data = VistaListaPrenotazioniAdmin(self.data_inizio) self.lista_prenotazioni_by_data.show() #Visualizza la lista completa delle prenotazioni def go_lista_prenotazioni(self): self.lista_prenotazioni = VistaListaPrenotazioniAdmin() self.lista_prenotazioni.show()
def initUI(self): """ cal = QCalendarWidget(self) cal.setGridVisible(True) cal.move(20, 20) cal.clicked[QDate].connect(self.showDate) """ cal = QCalendarWidget(self) dtEdit = QDateEdit(QDate.currentDate(), self) dtEdit.setCalendarPopup(True) dtEdit.setCalendarWidget(cal) dtEdit.setDate(cal.selectedDate()) dtEdit.dateChanged.connect(self.showDate) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) self.lbl.move(130, 260) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Calendar') self.show()
def initUI(self): cal = QCalendarWidget(self) # создание виджета QCalendarWidget cal.setGridVisible(True) # cal.move(20, 20) # расположение календаря cal.clicked[QDate].connect(self.showDate) # когда выбирается дата срабатывает сигнал clicked[QDate], # и мы присоединем этот сигнал к определленому пользовательскому методу showDate self.lbl = QLabel(self) # создание лейбла date = cal.selectedDate() # возвращаем выбранную дату путем вызова метода selectedDat (начальная дата) self.lbl.setText(date.toString()) # превращаем объект даты в строку и устанавливаем в лейбл (начальная дата) self.lbl.move(130, 260) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Calendar') self.show()
def initUI(self): vbox = QVBoxLayout(self) cal = QCalendarWidget(self) cal.setGridVisible(True) cal.clicked[QDate].connect(self.showDate) vbox.addWidget(cal) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) vbox.addWidget(self.lbl) self.setLayout(vbox) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Calendar') self.show()
def initUI(self): cal = QCalendarWidget(self) cal.setGridVisible(True) cal.move(20, 20) cal.clicked[QDate].connect(self.showDate) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) self.lbl.move(130, 260) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Calendar') self.show()
class DateInputW(QFrame): def __init__(self, parent): super(DateInputW, self).__init__() self.layout = QGridLayout() self.parent = parent self.title1 = QLabel(u'Начало:', self) self.title1.move(5, 5) self.cal1 = QCalendarWidget() self.cal1.setGridVisible(True) self.cal1.setDateEditEnabled(True) self.cal1.clicked.connect(self.setDateStart) self.cal1.setFixedSize(200, 160) ymd1 = [parent.day_start.year, parent.day_start.month, parent.day_start.day] qdate1 = QDate() qdate1.setDate(ymd1[0], ymd1[1], ymd1[2]) self.cal1.setSelectedDate(qdate1) self.lbl1 = QLabel(self) self.lbl1.setText(parent.day_start.strftime('%d/%m/%Y')) self.lbl1.move(5, 25) self.title2 = QLabel(u'Конец:', self) self.title2.move(325, 5) self.cal2 = QCalendarWidget() self.cal2.setGridVisible(True) self.cal2.setDateEditEnabled(True) self.cal2.clicked.connect(self.setDateEnd) self.cal2.setFixedSize(200, 160) ymd2 = [parent.day_end.year, parent.day_end.month, parent.day_end.day] qdate2 = QDate() qdate2.setDate(ymd2[0], ymd2[1], ymd2[2]) self.cal2.setSelectedDate(qdate2) self.lbl2 = QLabel(self) self.lbl2.setText(parent.day_end.strftime('%d/%m/%Y')) self.lbl2.move(325, 25) self.layout.addWidget(self.cal1, 1, 0) self.layout.addWidget(self.cal2, 1, 1) self.setAutoFillBackground(True) palette = self.palette() palette.setColor(self.backgroundRole(), QColor('white')) self.setPalette(palette) self.setFrameShape(_frameShape) self.setFrameShadow(_frameShadow) self.setLineWidth(_lineWidth) self.setMidLineWidth(_midLineWidth) #change NavBar background color child = self.cal1.children()[3] palette = child.palette() palette.setColor(child.backgroundRole(), QColor('silver')) child.setPalette(palette) child = self.cal2.children()[3] palette = child.palette() palette.setColor(child.backgroundRole(), QColor('silver')) child.setPalette(palette) # change cell color brush = self.cal1.paintCell #self.cal1.setWeekdayTextFormat(headerForm) #parent.layout.addLayout(self.layout, 1, 0, 1, 2) def setDateStart(self): date = self.cal1.selectedDate() date = date.toPyDate() self.parent.day_start = datetime.datetime(date.year, date.month, date.day) self.lbl1.setText(self.parent.day_start.strftime('%d/%m/%Y')) minDate_dt = self.parent.day_start + datetime.timedelta(days=1) minDate = QDate() minDate.setDate(minDate_dt.year, minDate_dt.month, minDate_dt.day) self.cal2.setMinimumDate(minDate) def setDateEnd(self): date = self.cal2.selectedDate() date = date.toPyDate() self.parent.day_end = datetime.datetime(date.year, date.month, date.day) self.lbl2.setText(self.parent.day_end.strftime('%d/%m/%Y')) maxDate_dt = self.parent.day_end - datetime.timedelta(days=1) maxDate = QDate() maxDate.setDate(maxDate_dt.year, maxDate_dt.month, maxDate_dt.day) self.cal1.setMaximumDate(maxDate)
class Calendar(QWidget): def __init__(self, parent): QWidget.__init__(self) self.parent = parent self.initUI() self.defaultDate() def initUI(self): self.layout = QHBoxLayout() self.groupboxCal = QGroupBox("Calendar") self.groupboxDataset = QGroupBox("Dataset") self.groupboxCal.setStyleSheet("QGroupBox { padding-top: 20 px;border: 1px solid gray; border-radius: 3px}") self.groupboxDataset.setStyleSheet("QGroupBox { padding-top: 20 px;border: 1px solid gray; border-radius: 3px}") self.layoutCal = QVBoxLayout() self.layoutDataset = QGridLayout() self.groupboxCal.setLayout(self.layoutCal) self.groupboxDataset.setLayout(self.layoutDataset) self.layout_but = QHBoxLayout() self.cal = QCalendarWidget(self) self.cal.setGridVisible(True) self.cal.clicked[QDate].connect(self.showDate) self.lbl = QLabel(self) date = self.cal.selectedDate() self.lbl.setText(date.toString()) self.buttonSave = QPushButton("Save") self.buttonSave.clicked.connect(self.closeEvent) self.checkboxRealTime = QCheckBox("Real Time Data Monitoring") self.checkboxPastRuns = QCheckBox("Visualize Past Runs") self.spinboxDays = QSpinBox() self.spinboxDays.setRange(1, 100) self.spinboxDays.setValue(1) self.checkboxRealTime.stateChanged.connect(self.realTimeMode) self.checkboxPastRuns.stateChanged.connect(self.oldData) self.checkboxRealTime.setCheckState(2) self.layoutDataset.addWidget(self.checkboxRealTime, 0, 0, 2, 1) self.layoutDataset.addWidget(QLabel("Duration (Days)"), 2, 1, 1, 1) self.layoutDataset.addWidget(self.checkboxPastRuns, 3, 0, 1, 1) self.layoutDataset.addWidget(self.spinboxDays, 3, 1, 1, 1) self.layoutCal.addWidget(self.cal) self.layout_but.addWidget(self.lbl) self.layout_but.addWidget(self.buttonSave) self.layoutCal.addLayout(self.layout_but) self.layout.addWidget(self.groupboxCal) self.layout.addWidget(self.groupboxDataset) self.setLayout(self.layout) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Calendar') self.setWindowModality(Qt.WindowModal) self.show() def defaultDate(self): mydate = datetime.datetime(datetime.datetime.today().year, datetime.datetime.today().month, datetime.datetime.today().day) self.mydatetime = mydate self.mydate_num = self.parent.db.convertTimetoAstro(mydate.strftime("%d/%m/%Y %H:%M:%S")) def getChosenDate(self): mydate = datetime.datetime.combine(self.cal.selectedDate().toPyDate(), datetime.datetime.min.time()) self.mydatetime = mydate self.mydate_num = self.parent.db.convertTimetoAstro(mydate.strftime("%d/%m/%Y %H:%M:%S")) def showDate(self, date): self.lbl.setText(date.toString()) def realTimeMode(self): if self.checkboxRealTime.isChecked(): self.parent.dataset = "real_time" self.checkboxPastRuns.setCheckState(0) else: self.checkboxPastRuns.setCheckState(2) def oldData(self): if self.checkboxPastRuns.isChecked(): self.parent.dataset = "past_run" self.checkboxRealTime.setCheckState(0) else: self.checkboxRealTime.setCheckState(2) def closeEvent(self, event): self.hide() self.getChosenDate() try: event.accept() except AttributeError: pass
def initUI(self): # checkbox cb = QCheckBox('show title', self) cb.move(20, 20) cb.toggle() cb.stateChanged.connect(self.changeTitle) # toggle button self.col = QColor(0, 0, 0) redb = QPushButton('red', self) redb.setCheckable(True) redb.move(20, 40) redb.clicked[bool].connect(self.setColor) greenb = QPushButton('green', self) greenb.setCheckable(True) greenb.move(20, 60) greenb.clicked[bool].connect(self.setColor) blueb = QPushButton('blue', self) blueb.setCheckable(True) blueb.move(20, 80) blueb.clicked[bool].connect(self.setColor) self.square = QFrame(self) self.square.setGeometry(150, 20, 100, 100) self.square.setStyleSheet('QWidget {background-color: %s}' % self.col.name()) # slider sld = QSlider(Qt.Horizontal, self) sld.setFocusPolicy(Qt.NoFocus) sld.setGeometry(20, 160, 100, 20) sld.valueChanged[int].connect(self.changeValue) self.label = QLabel('0', self) self.label.setGeometry(140, 155, 80, 30) # progressbar self.pbar = QProgressBar(self) self.pbar.setGeometry(20, 200, 200, 25) self.btn = QPushButton('start', self) self.btn.move(20, 230) self.btn.clicked.connect(self.doAction) self.timer = QBasicTimer() self.step = 0 # calendar cal = QCalendarWidget(self) cal.setGridVisible(True) cal.move(20, 300) cal.clicked[QDate].connect(self.showDate) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) self.lbl.move(20, 280) self.setGeometry(300, 300, 400, 550) self.setWindowTitle('widgets') self.show()
class Calendar(QWidget): def __init__(self, dateplot): self.dateplot = dateplot QWidget.__init__(self) self.layout = QHBoxLayout() self.cal = QCalendarWidget(self) self.cal.setGridVisible(True) self.cal.clicked[QDate].connect(self.showDate) self.cal.activated.connect(self.hide) gbCalendar = QGroupBox('Calendar') gbDataset = QGroupBox('Dataset') gbCalendar.setStyleSheet('QGroupBox { padding-top: 20 px;border: 1px solid gray; border-radius: 3px}') gbDataset.setStyleSheet('QGroupBox { padding-top: 20 px;border: 1px solid gray; border-radius: 3px}') self.confAuto = QCheckBox('Configuration : Auto') self.checkboxRealTime = QCheckBox('Real-time') self.checkboxPastRuns = QCheckBox('Archived') self.spinboxDays = QSpinBox() self.spinboxDays.setRange(1, 100) self.spinboxDays.setValue(1) self.confAuto.setChecked(0) self.confAuto.stateChanged.connect(self.dateplot.loadConf) self.checkboxRealTime.stateChanged.connect(self.realtime) self.checkboxPastRuns.stateChanged.connect(self.archivedData) self.checkboxRealTime.setCheckState(2) layoutDataset = QGridLayout() layoutDataset.addWidget(self.confAuto, 0, 0, 2, 1) layoutDataset.addWidget(self.checkboxRealTime, 2, 0, 2, 1) layoutDataset.addWidget(QLabel('Duration (Days)'), 4, 1, 1, 1) layoutDataset.addWidget(self.checkboxPastRuns, 5, 0, 1, 1) layoutDataset.addWidget(self.spinboxDays, 5, 1, 1, 1) layoutCalendar = QVBoxLayout() layoutCalendar.addWidget(self.cal) gbCalendar.setLayout(layoutCalendar) gbDataset.setLayout(layoutDataset) self.layout.addWidget(gbCalendar) self.layout.addWidget(gbDataset) self.setLayout(self.layout) self.setGeometry(300, 300, 350, 300) self.setWindowTitle('Calendar') self.setWindowModality(Qt.WindowModal) def showDate(self, date=None): date = self.cal.selectedDate() if date is None else date date = dt.datetime.combine(date.toPyDate(), dt.datetime.min.time()) self.dateplot.updateDate(date) def closeEvent(self, event): self.hide() try: event.accept() except AttributeError: pass def realtime(self): state = 0 if self.checkboxRealTime.isChecked() else 2 self.checkboxPastRuns.setCheckState(state) def archivedData(self): state = 0 if self.checkboxPastRuns.isChecked() else 2 self.checkboxRealTime.setCheckState(state)
def initUI(self): # checkbox cb = QCheckBox('Show title', self) cb.move(20, 160) cb.toggle() cb.stateChanged.connect(self.changeTitle) # toggle button self.col = QColor(0, 0, 0) redb = QPushButton('Red', self) redb.setCheckable(True) redb.move(10, 10) redb.clicked[bool].connect(self.setColor) redb = QPushButton('Green', self) redb.setCheckable(True) redb.move(10, 60) redb.clicked[bool].connect(self.setColor) blueb = QPushButton('Blue', self) blueb.setCheckable(True) blueb.move(10, 110) blueb.clicked[bool].connect(self.setColor) self.square = QFrame(self) self.square.setGeometry(150, 20, 100, 100) self.square.setStyleSheet("QWidget { background-color: %s }" % self.col.name()) # slider sld = QSlider(Qt.Horizontal, self) sld.setFocusPolicy(Qt.NoFocus) sld.setGeometry(30, 210, 100, 30) sld.valueChanged[int].connect(self.changeValue) # pixmap self.label = QLabel(self) self.label.setPixmap(QPixmap('web.png')) self.label.setGeometry(160, 210, 80, 30) # process bar self.pbar = QProgressBar(self) self.pbar.setGeometry(30, 260, 200, 25) self.btn = QPushButton('Start', self) self.btn.move(40, 310) self.btn.clicked.connect(self.doAction) self.timer = QBasicTimer() self.step = 0 # calendar cal = QCalendarWidget(self) cal.setGridVisible(True) cal.move(300, 10) cal.clicked[QDate].connect(self.showDate) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) self.lbl.move(300, 260) # line edit self.lbl2 = QLabel(self) qle = QLineEdit(self) qle.move(300, 310) self.lbl2.move(480, 310) qle.textChanged[str].connect(self.onChanged) self.setGeometry(300, 300, 640, 480) self.setWindowTitle('QCheckBox') self.show()
class Window(QWidget): def __init__(self): super(Window, self).__init__() self.createPreviewGroupBox() self.createGeneralOptionsGroupBox() self.createDatesGroupBox() self.createTextFormatsGroupBox() layout = QGridLayout() layout.addWidget(self.previewGroupBox, 0, 0) layout.addWidget(self.generalOptionsGroupBox, 0, 1) layout.addWidget(self.datesGroupBox, 1, 0) layout.addWidget(self.textFormatsGroupBox, 1, 1) layout.setSizeConstraint(QLayout.SetFixedSize) self.setLayout(layout) self.previewLayout.setRowMinimumHeight(0, self.calendar.sizeHint().height()) self.previewLayout.setColumnMinimumWidth(0, self.calendar.sizeHint().width()) self.setWindowTitle("Calendar Widget") def localeChanged(self, index): self.calendar.setLocale(self.localeCombo.itemData(index)) def firstDayChanged(self, index): self.calendar.setFirstDayOfWeek( Qt.DayOfWeek(self.firstDayCombo.itemData(index))) def selectionModeChanged(self, index): self.calendar.setSelectionMode( QCalendarWidget.SelectionMode( self.selectionModeCombo.itemData(index))) def horizontalHeaderChanged(self, index): self.calendar.setHorizontalHeaderFormat( QCalendarWidget.HorizontalHeaderFormat( self.horizontalHeaderCombo.itemData(index))) def verticalHeaderChanged(self, index): self.calendar.setVerticalHeaderFormat( QCalendarWidget.VerticalHeaderFormat( self.verticalHeaderCombo.itemData(index))) def selectedDateChanged(self): self.currentDateEdit.setDate(self.calendar.selectedDate()) def minimumDateChanged(self, date): self.calendar.setMinimumDate(date) self.maximumDateEdit.setDate(self.calendar.maximumDate()) def maximumDateChanged(self, date): self.calendar.setMaximumDate(date) self.minimumDateEdit.setDate(self.calendar.minimumDate()) def weekdayFormatChanged(self): format = QTextCharFormat() format.setForeground( Qt.GlobalColor( self.weekdayColorCombo.itemData( self.weekdayColorCombo.currentIndex()))) self.calendar.setWeekdayTextFormat(Qt.Monday, format) self.calendar.setWeekdayTextFormat(Qt.Tuesday, format) self.calendar.setWeekdayTextFormat(Qt.Wednesday, format) self.calendar.setWeekdayTextFormat(Qt.Thursday, format) self.calendar.setWeekdayTextFormat(Qt.Friday, format) def weekendFormatChanged(self): format = QTextCharFormat() format.setForeground( Qt.GlobalColor( self.weekendColorCombo.itemData( self.weekendColorCombo.currentIndex()))) self.calendar.setWeekdayTextFormat(Qt.Saturday, format) self.calendar.setWeekdayTextFormat(Qt.Sunday, format) def reformatHeaders(self): text = self.headerTextFormatCombo.currentText() format = QTextCharFormat() if text == "Bold": format.setFontWeight(QFont.Bold) elif text == "Italic": format.setFontItalic(True) elif text == "Green": format.setForeground(Qt.green) self.calendar.setHeaderTextFormat(format) def reformatCalendarPage(self): if self.firstFridayCheckBox.isChecked(): firstFriday = QDate(self.calendar.yearShown(), self.calendar.monthShown(), 1) while firstFriday.dayOfWeek() != Qt.Friday: firstFriday = firstFriday.addDays(1) firstFridayFormat = QTextCharFormat() firstFridayFormat.setForeground(Qt.blue) self.calendar.setDateTextFormat(firstFriday, firstFridayFormat) # May 1st in Red takes precedence. if self.mayFirstCheckBox.isChecked(): mayFirst = QDate(self.calendar.yearShown(), 5, 1) mayFirstFormat = QTextCharFormat() mayFirstFormat.setForeground(Qt.red) self.calendar.setDateTextFormat(mayFirst, mayFirstFormat) def createPreviewGroupBox(self): self.previewGroupBox = QGroupBox("Preview") self.calendar = QCalendarWidget() self.calendar.setMinimumDate(QDate(1900, 1, 1)) self.calendar.setMaximumDate(QDate(3000, 1, 1)) self.calendar.setGridVisible(True) self.calendar.currentPageChanged.connect(self.reformatCalendarPage) self.previewLayout = QGridLayout() self.previewLayout.addWidget(self.calendar, 0, 0, Qt.AlignCenter) self.previewGroupBox.setLayout(self.previewLayout) def createGeneralOptionsGroupBox(self): self.generalOptionsGroupBox = QGroupBox("General Options") self.localeCombo = QComboBox() curLocaleIndex = -1 index = 0 this_language = self.locale().nativeLanguageName() this_country = self.locale().nativeCountryName() for locale in QLocale.matchingLocales(QLocale.AnyLanguage, QLocale.AnyScript, QLocale.AnyCountry): language = locale.nativeLanguageName() country = locale.nativeCountryName() if language == this_language and country == this_country: curLocaleIndex = index self.localeCombo.addItem('%s/%s' % (language, country), locale) index += 1 if curLocaleIndex != -1: self.localeCombo.setCurrentIndex(curLocaleIndex) self.localeLabel = QLabel("&Locale") self.localeLabel.setBuddy(self.localeCombo) self.firstDayCombo = QComboBox() self.firstDayCombo.addItem("Sunday", Qt.Sunday) self.firstDayCombo.addItem("Monday", Qt.Monday) self.firstDayCombo.addItem("Tuesday", Qt.Tuesday) self.firstDayCombo.addItem("Wednesday", Qt.Wednesday) self.firstDayCombo.addItem("Thursday", Qt.Thursday) self.firstDayCombo.addItem("Friday", Qt.Friday) self.firstDayCombo.addItem("Saturday", Qt.Saturday) self.firstDayLabel = QLabel("Wee&k starts on:") self.firstDayLabel.setBuddy(self.firstDayCombo) self.selectionModeCombo = QComboBox() self.selectionModeCombo.addItem("Single selection", QCalendarWidget.SingleSelection) self.selectionModeCombo.addItem("None", QCalendarWidget.NoSelection) self.selectionModeLabel = QLabel("&Selection mode:") self.selectionModeLabel.setBuddy(self.selectionModeCombo) self.gridCheckBox = QCheckBox("&Grid") self.gridCheckBox.setChecked(self.calendar.isGridVisible()) self.navigationCheckBox = QCheckBox("&Navigation bar") self.navigationCheckBox.setChecked(True) self.horizontalHeaderCombo = QComboBox() self.horizontalHeaderCombo.addItem("Single letter day names", QCalendarWidget.SingleLetterDayNames) self.horizontalHeaderCombo.addItem("Short day names", QCalendarWidget.ShortDayNames) self.horizontalHeaderCombo.addItem("Long day names", QCalendarWidget.LongDayNames) self.horizontalHeaderCombo.addItem("None", QCalendarWidget.NoHorizontalHeader) self.horizontalHeaderCombo.setCurrentIndex(1) self.horizontalHeaderLabel = QLabel("&Horizontal header:") self.horizontalHeaderLabel.setBuddy(self.horizontalHeaderCombo) self.verticalHeaderCombo = QComboBox() self.verticalHeaderCombo.addItem("ISO week numbers", QCalendarWidget.ISOWeekNumbers) self.verticalHeaderCombo.addItem("None", QCalendarWidget.NoVerticalHeader) self.verticalHeaderLabel = QLabel("&Vertical header:") self.verticalHeaderLabel.setBuddy(self.verticalHeaderCombo) self.localeCombo.currentIndexChanged.connect(self.localeChanged) self.firstDayCombo.currentIndexChanged.connect(self.firstDayChanged) self.selectionModeCombo.currentIndexChanged.connect( self.selectionModeChanged) self.gridCheckBox.toggled.connect(self.calendar.setGridVisible) self.navigationCheckBox.toggled.connect( self.calendar.setNavigationBarVisible) self.horizontalHeaderCombo.currentIndexChanged.connect( self.horizontalHeaderChanged) self.verticalHeaderCombo.currentIndexChanged.connect( self.verticalHeaderChanged) checkBoxLayout = QHBoxLayout() checkBoxLayout.addWidget(self.gridCheckBox) checkBoxLayout.addStretch() checkBoxLayout.addWidget(self.navigationCheckBox) outerLayout = QGridLayout() outerLayout.addWidget(self.localeLabel, 0, 0) outerLayout.addWidget(self.localeCombo, 0, 1) outerLayout.addWidget(self.firstDayLabel, 1, 0) outerLayout.addWidget(self.firstDayCombo, 1, 1) outerLayout.addWidget(self.selectionModeLabel, 2, 0) outerLayout.addWidget(self.selectionModeCombo, 2, 1) outerLayout.addLayout(checkBoxLayout, 3, 0, 1, 2) outerLayout.addWidget(self.horizontalHeaderLabel, 4, 0) outerLayout.addWidget(self.horizontalHeaderCombo, 4, 1) outerLayout.addWidget(self.verticalHeaderLabel, 5, 0) outerLayout.addWidget(self.verticalHeaderCombo, 5, 1) self.generalOptionsGroupBox.setLayout(outerLayout) self.firstDayChanged(self.firstDayCombo.currentIndex()) self.selectionModeChanged(self.selectionModeCombo.currentIndex()) self.horizontalHeaderChanged(self.horizontalHeaderCombo.currentIndex()) self.verticalHeaderChanged(self.verticalHeaderCombo.currentIndex()) def createDatesGroupBox(self): self.datesGroupBox = QGroupBox(self.tr("Dates")) self.minimumDateEdit = QDateEdit() self.minimumDateEdit.setDisplayFormat('MMM d yyyy') self.minimumDateEdit.setDateRange(self.calendar.minimumDate(), self.calendar.maximumDate()) self.minimumDateEdit.setDate(self.calendar.minimumDate()) self.minimumDateLabel = QLabel("&Minimum Date:") self.minimumDateLabel.setBuddy(self.minimumDateEdit) self.currentDateEdit = QDateEdit() self.currentDateEdit.setDisplayFormat('MMM d yyyy') self.currentDateEdit.setDate(self.calendar.selectedDate()) self.currentDateEdit.setDateRange(self.calendar.minimumDate(), self.calendar.maximumDate()) self.currentDateLabel = QLabel("&Current Date:") self.currentDateLabel.setBuddy(self.currentDateEdit) self.maximumDateEdit = QDateEdit() self.maximumDateEdit.setDisplayFormat('MMM d yyyy') self.maximumDateEdit.setDateRange(self.calendar.minimumDate(), self.calendar.maximumDate()) self.maximumDateEdit.setDate(self.calendar.maximumDate()) self.maximumDateLabel = QLabel("Ma&ximum Date:") self.maximumDateLabel.setBuddy(self.maximumDateEdit) self.currentDateEdit.dateChanged.connect(self.calendar.setSelectedDate) self.calendar.selectionChanged.connect(self.selectedDateChanged) self.minimumDateEdit.dateChanged.connect(self.minimumDateChanged) self.maximumDateEdit.dateChanged.connect(self.maximumDateChanged) dateBoxLayout = QGridLayout() dateBoxLayout.addWidget(self.currentDateLabel, 1, 0) dateBoxLayout.addWidget(self.currentDateEdit, 1, 1) dateBoxLayout.addWidget(self.minimumDateLabel, 0, 0) dateBoxLayout.addWidget(self.minimumDateEdit, 0, 1) dateBoxLayout.addWidget(self.maximumDateLabel, 2, 0) dateBoxLayout.addWidget(self.maximumDateEdit, 2, 1) dateBoxLayout.setRowStretch(3, 1) self.datesGroupBox.setLayout(dateBoxLayout) def createTextFormatsGroupBox(self): self.textFormatsGroupBox = QGroupBox("Text Formats") self.weekdayColorCombo = self.createColorComboBox() self.weekdayColorCombo.setCurrentIndex( self.weekdayColorCombo.findText("Black")) self.weekdayColorLabel = QLabel("&Weekday color:") self.weekdayColorLabel.setBuddy(self.weekdayColorCombo) self.weekendColorCombo = self.createColorComboBox() self.weekendColorCombo.setCurrentIndex( self.weekendColorCombo.findText("Red")) self.weekendColorLabel = QLabel("Week&end color:") self.weekendColorLabel.setBuddy(self.weekendColorCombo) self.headerTextFormatCombo = QComboBox() self.headerTextFormatCombo.addItem("Bold") self.headerTextFormatCombo.addItem("Italic") self.headerTextFormatCombo.addItem("Plain") self.headerTextFormatLabel = QLabel("&Header text:") self.headerTextFormatLabel.setBuddy(self.headerTextFormatCombo) self.firstFridayCheckBox = QCheckBox("&First Friday in blue") self.mayFirstCheckBox = QCheckBox("May &1 in red") self.weekdayColorCombo.currentIndexChanged.connect( self.weekdayFormatChanged) self.weekendColorCombo.currentIndexChanged.connect( self.weekendFormatChanged) self.headerTextFormatCombo.currentIndexChanged.connect( self.reformatHeaders) self.firstFridayCheckBox.toggled.connect(self.reformatCalendarPage) self.mayFirstCheckBox.toggled.connect(self.reformatCalendarPage) checkBoxLayout = QHBoxLayout() checkBoxLayout.addWidget(self.firstFridayCheckBox) checkBoxLayout.addStretch() checkBoxLayout.addWidget(self.mayFirstCheckBox) outerLayout = QGridLayout() outerLayout.addWidget(self.weekdayColorLabel, 0, 0) outerLayout.addWidget(self.weekdayColorCombo, 0, 1) outerLayout.addWidget(self.weekendColorLabel, 1, 0) outerLayout.addWidget(self.weekendColorCombo, 1, 1) outerLayout.addWidget(self.headerTextFormatLabel, 2, 0) outerLayout.addWidget(self.headerTextFormatCombo, 2, 1) outerLayout.addLayout(checkBoxLayout, 3, 0, 1, 2) self.textFormatsGroupBox.setLayout(outerLayout) self.weekdayFormatChanged() self.weekendFormatChanged() self.reformatHeaders() self.reformatCalendarPage() def createColorComboBox(self): comboBox = QComboBox() comboBox.addItem("Red", Qt.red) comboBox.addItem("Blue", Qt.blue) comboBox.addItem("Black", Qt.black) comboBox.addItem("Magenta", Qt.magenta) return comboBox
class MainWidget(QWidget): def __init__(self): QWidget.__init__(self) # Set Time One Group self.time_one_calendar = QCalendarWidget() self.time_one_country_combobox = QComboBox() self.time_one_vbox = QVBoxLayout() self.time_one_groupbox = QGroupBox("Time One") self.time_one_bottom_hbox = QHBoxLayout() self.time_one_time_edit = QTimeEdit() self.time_one_default_button = QPushButton() self.time_one_default_button.setIcon(QIcon("%s/gnome-set-time.png" % icon_path)) self.time_one_default_button.setMaximumSize(50, 50) self.time_one_bottom_hbox.addWidget(self.time_one_time_edit) self.time_one_bottom_hbox.addWidget(self.time_one_default_button) self.time_one_vbox.addWidget(self.time_one_country_combobox) self.time_one_vbox.addWidget(self.time_one_calendar) self.time_one_vbox.addLayout(self.time_one_bottom_hbox) self.time_one_groupbox.setLayout(self.time_one_vbox) # Set Time Two Group self.time_two_groupbox = QGroupBox("Time Two") self.time_two_calendar = QCalendarWidget() self.time_two_vbox = QVBoxLayout() self.time_two_country_combobox = QComboBox() self.time_two_bottom_hbox = QHBoxLayout() self.time_two_time_edit = QTimeEdit() self.time_two_default_button = QPushButton() self.time_two_default_button.setIcon(QIcon("%s/gnome-set-time.png" % icon_path)) self.time_two_default_button.setMaximumSize(50, 50) self.time_two_bottom_hbox.addWidget(self.time_two_time_edit) self.time_two_bottom_hbox.addWidget(self.time_two_default_button) self.time_two_vbox.addWidget(self.time_two_country_combobox) self.time_two_vbox.addWidget(self.time_two_calendar) self.time_two_vbox.addLayout(self.time_two_bottom_hbox) self.time_two_groupbox.setLayout(self.time_two_vbox) # Set main layout self.main_layout = QHBoxLayout() self.main_layout.addWidget(self.time_one_groupbox) self.main_layout.addWidget(self.time_two_groupbox) self.setLayout(self.main_layout) # Wire-up your widgets! self.time_one_connect() self.time_two_connect() self.time_one_default_button.clicked.connect(self.set_local_time_one) self.time_two_default_button.clicked.connect(self.set_local_time_two) # Set the local time for time one self.set_local_country() self.set_local_time_one() # Finally, convert the second time based on the first self.convert_timeone_to_timetwo() def set_local_country(self): global_timezone_list = timezone_info.get_global_timezone_list() local_tz_index = global_timezone_list.index(str(self.get_local_timezone())) self.time_one_country_combobox.addItems(global_timezone_list) self.time_one_country_combobox.setCurrentIndex(local_tz_index) self.time_two_country_combobox.addItems(global_timezone_list) # To-do: Current solution works for Debian systems. Need to find repo solution that # allows for something like "from tzlocal import get_localzone" @staticmethod def get_local_timezone(): timezone_file = '/etc/timezone' try: file = open(timezone_file, 'r') system_timezone = file.read().rstrip() except IOError: print("Unable to open %s") & timezone_file system_timezone = 'UTC' return system_timezone @staticmethod def get_local_times(): local_hour = datetime.datetime.now().strftime("%H") local_minute = datetime.datetime.now().strftime("%M") local_current_time = QTime(int(local_hour), int(local_minute), 0, 0) return local_current_time def set_local_time_one(self): # Set time for one time local_current_time = self.get_local_times() self.time_one_time_edit.setTime(local_current_time) # Set date for one calendar self.time_one_calendar.setSelectedDate(QDate.currentDate()) # Convert the second time based on the first self.convert_timeone_to_timetwo() def set_local_time_two(self): # Set time for one time local_current_time = self.get_local_times() self.time_two_time_edit.setTime(local_current_time) # Set date for one calendar self.time_two_calendar.setSelectedDate(QDate.currentDate()) # Convert the first time based on the second self.convert_timetwo_to_timeone() def time_one_connect(self): self.time_one_country_combobox.activated.connect(self.convert_timeone_to_timetwo) self.time_one_calendar.clicked.connect(self.convert_timeone_to_timetwo) self.time_one_calendar.currentPageChanged.connect(self.convert_timeone_to_timetwo) self.time_one_time_edit.timeChanged.connect(self.convert_timeone_to_timetwo) def time_two_connect(self): self.time_two_country_combobox.activated.connect(self.convert_timeone_to_timetwo) self.time_two_calendar.clicked.connect(self.convert_timetwo_to_timeone) self.time_two_calendar.currentPageChanged.connect(self.convert_timetwo_to_timeone) self.time_two_time_edit.timeChanged.connect(self.convert_timetwo_to_timeone) def time_one_disconnect(self): self.time_one_calendar.clicked.disconnect() self.time_one_country_combobox.activated.disconnect() self.time_one_time_edit.timeChanged.disconnect() def time_two_disconnect(self): self.time_two_calendar.clicked.disconnect() self.time_two_country_combobox.activated.disconnect() self.time_two_time_edit.timeChanged.disconnect() def clear_combo_boxes(self): self.time_one_country_combobox.clear() self.time_two_country_combobox.clear() def __amend_country_region(self): """ Used to add the regional header before converting if a region outside of global is used. """ current_region = timezone_info.get_city_region(self.time_one_country_combobox.currentText()) time_one_country = self.time_one_country_combobox.currentText() time_two_country = self.time_two_country_combobox.currentText() if '/' not in time_one_country: time_one_country = current_region+'/'+self.time_one_country_combobox.currentText() time_two_country = current_region+'/'+self.time_two_country_combobox.currentText() return time_one_country, time_two_country def convert_timeone_to_timetwo(self): # Disconnect time two widgets,so that they do not run self.time_two_disconnect() time_one_country, time_two_country = self.__amend_country_region() date_time_one = datetime.datetime(self.time_one_calendar.yearShown(), self.time_one_calendar.monthShown(), self.time_one_calendar.selectedDate().day(), self.time_one_time_edit.time().hour(), self.time_one_time_edit.time().minute()) first_tz = timezone(time_one_country) second_tz = timezone(time_two_country) first_dt = first_tz.localize(date_time_one) second_dt = first_dt.astimezone(second_tz) new_date_two = QDate(second_dt.year, second_dt.month, second_dt.day) self.time_two_calendar.setSelectedDate(new_date_two) new_time_two = QTime(int(second_dt.hour), int(second_dt.minute)) self.time_two_time_edit.setTime(new_time_two) # Reconnect time one widgets. self.time_two_connect() def convert_timetwo_to_timeone(self): # Disconnect time one widgets,so that they do not run self.time_one_disconnect() time_one_country, time_two_country = self.__amend_country_region() date_time_two = datetime.datetime(self.time_two_calendar.yearShown(), self.time_two_calendar.monthShown(), self.time_two_calendar.selectedDate().day(), self.time_two_time_edit.time().hour(), self.time_two_time_edit.time().minute()) first_tz = timezone(time_one_country) second_tz = timezone(time_two_country) second_dt = second_tz.localize(date_time_two) first_dt = second_dt.astimezone(first_tz) new_date_one = QDate(first_dt.year, first_dt.month, first_dt.day) self.time_one_calendar.setSelectedDate(new_date_one) new_time_one = QTime(int(first_dt.hour), int(first_dt.minute)) self.time_one_time_edit.setTime(new_time_one) # Reconnect time one widgets self.time_one_connect()
def initUI(self): # checkBox cb = QCheckBox('show title', self) cb.move(10, 10) cb.toggle() cb.stateChanged.connect(self.changeTitle) # 颜色混合 self.col = QColor(0, 0, 0) redb = QPushButton('Red', self) redb.setCheckable(True) redb.move(10, 30) redb.clicked[bool].connect(self.setColor) grnb = QPushButton('Green', self) grnb.setCheckable(True) grnb.move(10, 60) grnb.clicked[bool].connect(self.setColor) blueb = QPushButton('Blue', self) blueb.setCheckable(True) blueb.move(10, 90) blueb.clicked[bool].connect(self.setColor) self.square = QFrame(self) self.square.setGeometry(150, 20, 50, 50) self.square.setStyleSheet("QWidget { background-color: %s}" % self.col.name()) # slider 滚动条 sld = QSlider(Qt.Horizontal, self) sld.setFocusPolicy(Qt.NoFocus) sld.setGeometry(10, 120, 100, 10) sld.valueChanged[int].connect(self.changeValue) self.label = QLabel(self) self.label.setPixmap(QPixmap('1.png')) self.label.setGeometry(150, 90, 80, 80) # 进度条ProgressBar self.pbar = QProgressBar(self) self.pbar.setGeometry(10, 170, 200, 20) self.btn = QPushButton('Start', self) self.btn.move(10, 200) self.btn.clicked.connect(self.doAction) self.timer = QBasicTimer() self.step = 0 # Calendar 日历 cal = QCalendarWidget(self) cal.setGridVisible(True) cal.move(10, 230) cal.clicked[QDate].connect(self.showDate) self.lbl = QLabel(self) date = cal.selectedDate() self.lbl.setText(date.toString()) self.lbl.move(80, 440) self.setGeometry(300, 200, 300, 500) self.setWindowTitle('Toggle') self.show()