Python 使用PyQt显示使用信号的日期更改

Python 使用PyQt显示使用信号的日期更改,python,pyqt,Python,Pyqt,我试图编写一个简单的代码,其中用户选择一个日期,并使用Qlabel函数显示所选择的日期。然而,我在传输信号时犯了一个错误,我想问是否有人能帮我处理代码。多谢各位 from PyQt4 import QtGui, QtCore from PyQt4.QtGui import * from PyQt4.QtCore import * class MyWindow(QtGui.QWidget): def __init__(self, parent=None): super(M

我试图编写一个简单的代码,其中用户选择一个日期,并使用Qlabel函数显示所选择的日期。然而,我在传输信号时犯了一个错误,我想问是否有人能帮我处理代码。多谢各位

from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *

class MyWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super(MyWindow, self).__init__(parent)

        self.dateEdit = QtGui.QDateEdit(self)
        self.lbl = QtGui.QLabel()
        self.dateEdit.setDateTime(QtCore.QDateTime.currentDateTime())
        self.dateEdit.setMaximumDate(QtCore.QDate(7999, 12, 28))
        self.dateEdit.setMaximumTime(QtCore.QTime(23, 59, 59))
        self.dateEdit.setCalendarPopup(True)

        layout = QGridLayout()
        layout.addWidget(self.dateEdit,0,0)
        layout.addWidget(self.lbl,0,1)
        self.setLayout(layout)


        self.connect(self.dateEdit, SIGNAL("dateChanged()"), self.updateUi)

    def updateUi(self):
        date1 = self.QtGui.QDateTimeEdit.QDate.date(self)
        self.lbl.setText(date1.toString())



if __name__ == "__main__":
    import sys

    app = QtGui.QApplication(sys.argv)
    app.setApplicationName('MyWindow')

    main = MyWindow()
    main.show()

    sys.exit(app.exec_())

请尝试以下代码:

从PyQt4导入QtGui,QtCore
从PyQt4.QtGui导入*
从PyQt4.QtCore导入*
类MyWindow(QtGui.QWidget):
def uuu init uuu(self,parent=None):
超级(MyWindow,self)。\uuuuu init\uuuuuu(父级)
self.dateEdit=QtGui.QDateEdit(self)
self.lbl=QtGui.QLabel()
self.dateEdit.setDateTime(QtCore.QDateTime.currentDateTime())
self.dateEdit.setMaximumDate(QtCore.QDate(7999,12,28))
self.dateEdit.setMaximumTime(QtCore.QTime(23,59,59))
self.dateEdit.setCalendarPopup(True)
布局=QGridLayout()
layout.addWidget(self.dateEdit,0,0)
layout.addWidget(self.lbl,0,1)
self.setLayout(布局)
self.connect(self.dateEdit,SIGNAL(“dateChanged(QDate)”),self.updateUi)
#或新样式:
#self.dateEdit.dateChanged.connect(self.updateUi)
def updateUi(自我):
date1=self.dateEdit.date()
self.lbl.setText(date1.toString())
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=QtGui.QApplication(sys.argv)
app.setApplicationName('MyWindow')
main=MyWindow()
main.show()
sys.exit(app.exec_())

请尝试以下代码:

从PyQt4导入QtGui,QtCore
从PyQt4.QtGui导入*
从PyQt4.QtCore导入*
类MyWindow(QtGui.QWidget):
def uuu init uuu(self,parent=None):
超级(MyWindow,self)。\uuuuu init\uuuuuu(父级)
self.dateEdit=QtGui.QDateEdit(self)
self.lbl=QtGui.QLabel()
self.dateEdit.setDateTime(QtCore.QDateTime.currentDateTime())
self.dateEdit.setMaximumDate(QtCore.QDate(7999,12,28))
self.dateEdit.setMaximumTime(QtCore.QTime(23,59,59))
self.dateEdit.setCalendarPopup(True)
布局=QGridLayout()
layout.addWidget(self.dateEdit,0,0)
layout.addWidget(self.lbl,0,1)
self.setLayout(布局)
self.connect(self.dateEdit,SIGNAL(“dateChanged(QDate)”),self.updateUi)
#或新样式:
#self.dateEdit.dateChanged.connect(self.updateUi)
def updateUi(自我):
date1=self.dateEdit.date()
self.lbl.setText(date1.toString())
如果名称=“\uuuuu main\uuuuuuuu”:
导入系统
app=QtGui.QApplication(sys.argv)
app.setApplicationName('MyWindow')
main=MyWindow()
main.show()
sys.exit(app.exec_())
我建议使用,因为它更易于编写和阅读:

self.dateEdit.dateChanged.connect(self.onDateChanged)
信号定义为无效日期更改(const QDate&,其中
QDate
为新日期。因此,插槽应如下所示:

def onDateChanged(self,newDate):
    print("The new date is "+newDate.toString())

另一方面,您不需要使用两个
import*
(请参阅)。只需将
QGridLayout()
替换为
QtGui.QGridLayout()
,代码就可以在没有它们的情况下运行。

我建议使用,因为它更易于编写和阅读:

self.dateEdit.dateChanged.connect(self.onDateChanged)
信号定义为无效日期更改(const QDate&,其中
QDate
为新日期。因此,插槽应如下所示:

def onDateChanged(self,newDate):
    print("The new date is "+newDate.toString())


另一方面,您不需要使用两个
import*
(请参阅)。只需将
QGridLayout()
替换为
QtGui.QGridLayout()
,代码就可以在没有它们的情况下运行。

谢谢你的新代码,我想日期()行之前的文本太多了。代码现在可以正常工作了,谢谢!谢谢你的新代码,我想在date()行之前的文本太多了。代码现在可以正常工作了,谢谢!