【发布时间】:2021-07-09 11:56:31
【问题描述】:
文件:main.py
# -*- 编码:utf-8 -*- # 通过读取 ui 文件 'main.ui' 生成的表单实现 # # 创建者:PyQt5 UI 代码生成器 5.15.2 # # 警告:当 pyuic5 被安装时,对该文件所做的任何手动更改都将丢失 # 再次运行。除非您知道自己在做什么,否则不要编辑此文件。 从 PyQt5 导入 QtCore、QtGui、QtWidgets 类 Ui_MainWindow(对象): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout.setContentsMargins(0, 0, 0, 0) self.gridLayout.setSpacing(0) self.gridLayout.setObjectName("gridLayout") self.scrollArea = QtWidgets.QScrollArea(self.centralwidget) self.scrollArea.setWidgetResizable(True) self.scrollArea.setObjectName("scrollArea") self.scrollAreaWidgetContents = QtWidgets.QWidget() self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 798, 598)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.gridLayout_2 = QtWidgets.QGridLayout(self.scrollAreaWidgetContents) self.gridLayout_2.setContentsMargins(0, 0, 0, 0) self.gridLayout_2.setSpacing(0) self.gridLayout_2.setObjectName("gridLayout_2") self.graphicsView = QtWidgets.QGraphicsView(self.scrollAreaWidgetContents) self.graphicsView.setMinimumSize(QtCore.QSize(0, 0)) self.graphicsView.setObjectName("graphicsView") self.gridLayout_2.addWidget(self.graphicsView, 0, 0, 1, 1) self.scrollArea.setWidget(self.scrollAreaWidgetContents) self.gridLayout.addWidget(self.scrollArea, 0, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) 如果 __name__ == "__main__": 导入系统 应用程序 = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(主窗口) MainWindow.show() sys.exit(app.exec_())文件:run_me.py
从 PyQt5 导入 QtCore、QtGui、QtWidgets 从 PyQt5.QtCore 导入 Qt 从主导入 Ui_MainWindow 作为 Ui_MainWindow 导入系统 类 Main_Code: def __init__(self): self.app = QtWidgets.QApplication(sys.argv) self.MainWindow = QtWidgets.QMainWindow() self.ui = Ui_MainWindow() self.ui.setupUi(self.MainWindow) self.MainWindow.showMaximized() self.set_input_data() self.set_view_variables() self.print_lines() sys.exit(self.app.exec_()) def set_input_data(self): self.schedule_items = [] self.schedule_items.append({"title":"计划项目 1 的标题","duration milliseconds":1000*51}) self.schedule_items.append({"title":"计划项目 2 的标题","duration 毫秒":1000*120}) self.schedule_items.append({"title":"计划项目 3 的标题","duration 毫秒":1000*500}) self.live_duration = 1000*60*60*2.5 #2小时30分钟 def set_view_variables(self): self.header_timeline_height = 40 self.schedule_items_height_spacing = 50 self.schedule_item_timeline_height = 40 self.schedule_item_movable_height = 120 #get QGraphicsView 尺寸 self.ui.graphicsView.setAlignment(Qt.AlignTop | Qt.AlignLeft) self.available_width = self.ui.graphicsView.width() self.available_height = self.ui.graphicsView.height() self.ui.graphicsView.resize(self.available_width, self.available_height) def print_lines(self): #打印时间线(顶部) self.MainWindow.setStyleSheet("背景色:黑色;") self.ui.graphicsView.setStyleSheet("背景色:黄色;") self.scene = QtWidgets.QGraphicsScene() self.scene.setBackgroundBrush(QtGui.QBrush(Qt.red)) self.ui.graphicsView.setScene(self.scene) self.ui.graphicsView.setSceneRect(0,0,self.available_width,self.available_height) self.timeline_line_top = QtWidgets.QGraphicsLineItem(0,self.MainWindow.height(),self.available_width,0) self.scene.addItem(self.timeline_line_top) 程序 = Main_Code()我正在尝试从左下角到右上角画一条线。
我认为这可能是一个规模问题(变量 self.available_width,self.available_height)。
我做错了什么?
【问题讨论】:
标签: python pyqt5 qgraphicsview qgraphicsscene