尝试从其他窗口打开时无法选择QCalendarWidget弹出窗口(主窗口)

时间:2020-01-24 07:12:21

标签: python pyqt pyqt5

我有一个带有按钮的python文件(file1.py),当它按下时将弹出日历日历小部件。在“日历”小部件中选择日期后,它将显示在Qlineedit框中(对象名称:Delivery_date_le)。单独运行file1.py时,此功能可以按预期工作。

我有一个Mainwindow文件(Main.py),它具有菜单按钮来调用 file1.py 窗口。从main.py访问file1窗口时,该窗口已打开,但没有选择日历小部件弹出窗口(无法选择日期)。请帮助我。

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_())

0 个答案:

没有答案
相关问题