作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 PyQT5 为我运行的一些需要用户日期输入的脚本构建一个 GUI。
我已经成功地达到了可以使用 DateEdit 范围选择日期的程度,并在用户每次更改日期时将新日期打印到控制台。
我需要做的是,当我单击“运行”按钮时,使用函数中 QDateEdit 小部件中的任何日期。
这是我的示例代码
import sys
from PyQt5 import QtGui
from PyQt5.QtCore import Qt, QDate
from PyQt5.QtWidgets import (QApplication, QCheckBox, QGridLayout, QGroupBox,
QMenu, QPushButton, QRadioButton, QVBoxLayout, QWidget, QFrame, QDateEdit)
class Window(QWidget):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.setWindowIcon(QtGui.QIcon('logo.png'))
self.setWindowTitle("Test")
self.resize(400, 300)
grid = QGridLayout()
grid.addWidget(self.group1(), 0, 0)
self.setLayout(grid)
def group1(self):
groupBox = QGroupBox("Box 1")
date = QDate.currentDate().addDays(-1)
dateSelect = QDateEdit()
dateSelect.setDate(date)
dateSelect.dateChanged.connect(self.onDateChanged)
checkbox1 = QCheckBox("Task 1")
checkbox2 = QCheckBox("Task 2")
checkbox3 = QCheckBox("Task 3")
button1 = QPushButton('Run')
button1.setMaximumWidth(75)
button1.clicked.connect(self.btn1_onClicked)
button2 = QPushButton('Run')
button2.setMaximumWidth(75)
separatorLine = QFrame()
separatorLine.setFrameShape(QFrame.HLine)
separatorLine.setFrameShadow(QFrame.Sunken)
vbox = QVBoxLayout()
vbox.addWidget(dateSelect)
vbox.addWidget(checkbox1)
vbox.addWidget(checkbox2)
vbox.addWidget(button1)
vbox.addWidget(separatorLine)
vbox.addWidget(checkbox3)
vbox.addWidget(button2)
vbox.addStretch(1)
groupBox.setLayout(vbox)
return groupBox
def btn1_onClicked(self, ):
date = onDateChanged()
def onDateChanged(self,newDate):
date = newDate.toString('yyyy-MM-dd')
print(date)
return date
if __name__ == '__main__':
app = QApplication(sys.argv)
clock = Window()
clock.show()
sys.exit(app.exec_())
最佳答案
QDateEdit
通过dateChanged
通知日期的变化信号,但在您的情况下,您不需要通知而是当前日期,为此您必须使用 date()
方法。
import sys
from PyQt5.QtCore import Qt, QDate
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import (
QApplication,
QCheckBox,
QGridLayout,
QGroupBox,
QPushButton,
QVBoxLayout,
QWidget,
QFrame,
QDateEdit,
)
class Window(QWidget):
def __init__(self, parent=None):
super(Window, self).__init__(parent)
self.setWindowIcon(QIcon("logo.png"))
self.setWindowTitle("Test")
self.resize(400, 300)
grid = QGridLayout(self)
grid.addWidget(self.group1(), 0, 0)
def group1(self):
groupBox = QGroupBox("Box 1")
date = QDate.currentDate().addDays(-1)
self.dateSelect = QDateEdit()
self.dateSelect.setDate(date)
self.dateSelect.dateChanged.connect(self.onDateChanged)
checkbox1 = QCheckBox("Task 1")
checkbox2 = QCheckBox("Task 2")
checkbox3 = QCheckBox("Task 3")
button1 = QPushButton("Run")
button1.setMaximumWidth(75)
button1.clicked.connect(self.btn1_onClicked)
button2 = QPushButton("Run")
button2.setMaximumWidth(75)
separatorLine = QFrame(frameShape=QFrame.HLine, frameShadow=QFrame.Sunken)
vbox = QVBoxLayout()
vbox.addWidget(self.dateSelect)
vbox.addWidget(checkbox1)
vbox.addWidget(checkbox2)
vbox.addWidget(button1)
vbox.addWidget(separatorLine)
vbox.addWidget(checkbox3)
vbox.addWidget(button2)
vbox.addStretch(1)
groupBox.setLayout(vbox)
return groupBox
def btn1_onClicked(self,):
print(self.dateSelect.date().toString("yyyy-MM-dd"))
def onDateChanged(self, newDate):
date = newDate.toString("yyyy-MM-dd")
print(date)
if __name__ == "__main__":
app = QApplication(sys.argv)
clock = Window()
clock.show()
sys.exit(app.exec_())
关于python - 如何在另一个函数中使用 QDateEdit 小部件中设置的用户值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59805193/
我是一名优秀的程序员,十分优秀!