У меня есть файл python (file1.py), в котором есть кнопка, и при нажатии на нее появится всплывающий виджет календаря. После того, как дата выбрана в виджете Calender, она будет отображаться в окне Qlineedit (Имя объекта: Delivery_date_le). Эта функция работает, как и ожидалось, при запуске только file1.py.
У меня есть файл Mainwindow (Main.py), в котором есть кнопка меню для вызова окна file1.py . при доступе к окну file1 из main.py, окно открылось, но выбора всплывающего окна виджета календаря не произошло (невозможно выбрать дату). Пожалуйста, помогите мне в этом.
file1.py:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QDialog,QCalendarWidget,QMessageBox
from PyQt5.QtCore import QDate,Qt
import os
import pyodbc
import datetime
class Ui_Daily_bill(object):
def setupUi(self, Daily_bill):
Daily_bill.setObjectName("Daily_bill")
Daily_bill.resize(1215, 809)
self.cal_tool_btn = QtWidgets.QToolButton(Daily_bill)
self.cal_tool_btn.setGeometry(QtCore.QRect(1159, 97, 30, 32))
self.cal_tool_btn.setStyleSheet("background-color: rgb(255, 255, 255);")
self.cal_tool_btn.setText("")
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("images/calendar-512.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.cal_tool_btn.setIcon(icon)
self.cal_tool_btn.setIconSize(QtCore.QSize(30, 30))
self.cal_tool_btn.setObjectName("cal_tool_btn")
self.delivery_date_le = QtWidgets.QLineEdit(Daily_bill)
self.delivery_date_le.setGeometry(QtCore.QRect(919, 98, 241, 31))
font = QtGui.QFont()
font.setFamily("Calibri")
font.setPointSize(12)
font.setBold(True)
font.setWeight(75)
self.delivery_date_le.setFont(font)
self.delivery_date_le.setObjectName("delivery_date_le")
def retranslateUi(self, Daily_bill):
_translate = QtCore.QCoreApplication.translate
Daily_bill.setWindowTitle(_translate("Daily_bill", "Dialog"))
class Add_Daily_Bill(QDialog,Ui_Daily_bill):
def __init__(self,parent=None):
super(Add_Daily_Bill,self).__init__(parent)
self.setupUi(self)
self.cal_tool_btn.clicked.connect(self.delivery_calender)
def delivery_calender(self):
self.calender = QCalendarWidget()
self.calender.setMinimumDate(QDate(1900,1,1))
self.calender.setMaximumDate(QDate(2999,12,31))
self.calender.setGridVisible(True)
self.calender.clicked.connect(self.updatedate)
self.calender.show()
def updatedate(self,*args):
getdate = self.calender.selectedDate().toString("dd/MM/yyyy")
print('get date value is ',getdate)
self.delivery_date_le.setText(getdate)
self.calender.deleteLater()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Daily_bill = QtWidgets.QDialog()
#ui = Ui_Daily_bill()
#ui.setupUi(Daily_bill)
#Daily_bill.show()
ui = Add_Daily_Bill()
ui.show()
sys.exit(app.exec_())
Main.py
from PyQt5.QtWidgets import QApplication,QMainWindow,QAction, QMessageBox,QLabel,QVBoxLayout, QWidget,QDialog
from PyQt5 import QtGui
from PyQt5.QtGui import QPixmap
from file1 import Add_Daily_Bill
import sys
class Mainwindow(QMainWindow):
def __init__(self):
super().__init__()
self.windowpage()
def windowpage(self):
menubar = self.menuBar()
custbillmenu = menubar.addMenu('Customer Billing')
dailybill = QAction('Daily Bill',self)
custbillmenu.addAction(dailybill)
dailybill.triggered.connect(self.daily_bill)
def daily_bill(self):
dialog =Add_Daily_Bill()
dialog.exec_()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Mainwindow()
window.showMaximized()
sys.exit(app.exec_())