首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QCalendarWidget渲染得很小

QCalendarWidget渲染得很小
EN

Stack Overflow用户
提问于 2019-09-11 00:11:35
回答 1查看 43关注 0票数 1

我正在尝试使用QCalendarWidget,但它在用户界面中并不像预期的那样呈现。我看到的例子显示了一个类似object的日历选择器,但在我的例子中,我得到了一个相当小的字段渲染。下面是它在UI中的外观:

这是我第一次使用它,所以我不确定我是否遗漏了一步。有没有想过我可能做错了什么?下面是使用的完整代码:

代码语言:javascript
复制
from PyQt5.QtWidgets import QMainWindow, QCalendarWidget, QLabel
from PyQt5 import QtCore, QtWidgets, QtGui


import sys

class Example(QMainWindow):

   def __init__(self):
      super(Example, self).__init__()

      self.initUI()

   def initUI(self):

      cal = QCalendarWidget(self)
      cal.setGridVisible(True)
      cal.move(20, 20)
      cal.clicked[QtCore.QDate].connect(self.showDate)

      self.lbl = QLabel(self)
      date = cal.selectedDate()
      self.lbl.setText(date.toString())
      self.lbl.move(20, 200)

      self.setGeometry(100,100,300,300)
      self.setWindowTitle('Calendar')
      self.show()

   def showDate(self, date):

      self.lbl.setText(date.toString())

def main():

    app = QtWidgets.QApplication(sys.argv)
    mainWin = Example()
    mainWin.show()
    sys.exit( app.exec_() )

if __name__ == '__main__':
   main()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-11 00:23:45

在centralWidget of QMainWindow中使用布局,例如QVBoxLayout:

代码语言:javascript
复制
import sys

from PyQt5 import QtCore, QtGui, QtWidgets 


class Example(QtWidgets.QMainWindow):
    def __init__(self):
        super(Example, self).__init__()

        self.initUI()

    def initUI(self):

        cal = QtWidgets.QCalendarWidget(gridVisible=True)
        cal.clicked.connect(self.showDate)

        self.lbl = QtWidgets.QLabel()
        date = cal.selectedDate()
        self.lbl.setText(date.toString())

        central_widget = QtWidgets.QWidget()
        self.setCentralWidget(central_widget)
        lay = QtWidgets.QVBoxLayout(central_widget)
        lay.addWidget(cal)
        lay.addWidget(self.lbl)

        self.setGeometry(100, 100, 300, 300)
        self.setWindowTitle("Calendar")

    @QtCore.pyqtSlot(QtCore.QDate)
    def showDate(self, date):
        self.lbl.setText(date.toString())


def main():

    app = QtWidgets.QApplication(sys.argv)
    mainWin = Example()
    mainWin.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57874616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档