Не удается выбрать всплывающее окно QCalendarWidget при попытке открыть его из другого окна (главное окно) - PullRequest
0 голосов
/ 24 января 2020

У меня есть файл 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_())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...