文件:main。派克
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'main.ui' # # Created by: PyQt5 UI code generator 5.15.2 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): 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")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
文件:run_me.py
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtCore import Qt from main import Ui_MainWindow as Ui_MainWindow import sys class 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":"Title for schedule item 1","duration milliseconds":1000*51}) self.schedule_items.append({"title":"Title for schedule item 2","duration milliseconds":1000*120}) self.schedule_items.append({"title":"Title for schedule item 3","duration milliseconds":1000*500}) self.live_duration = 1000*60*60*2.5 #2 hours and 30 minutes 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 dimensions 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): #print timeline line (top) self.MainWindow.setStyleSheet("background-color: black;") self.ui.graphicsView.setStyleSheet("background-color: yellow;") 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 ) program = Main_Code()
我试图从左下角到右上角画一条线。
我认为这可能是一个尺度问题(变量self.available\u width,self.available\u height)。
我做错了什么?
调整大小(和许多其他几何属性)不同步更新,而是将标志(如最大化)或所需大小(使用调整大小()方法)发送到操作系统(通过库)以修改现有窗口,然后操作系统实现它返回应用更改后得到的值。因此,不建议立即进行计算,而是给它一个延迟:
from PyQt5 import QtCore, QtGui, QtWidgets
from main import Ui_MainWindow as Ui_MainWindow
import sys
class 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.init_ui()
sys.exit(self.app.exec_())
def init_ui(self):
self.ui.graphicsView.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignLeft)
self.MainWindow.setStyleSheet("background-color: black;")
self.ui.graphicsView.setStyleSheet("background-color: yellow;")
self.scene = QtWidgets.QGraphicsScene()
self.scene.setBackgroundBrush(QtGui.QBrush(QtCore.Qt.red))
self.ui.graphicsView.setScene(self.scene)
QtCore.QTimer.singleShot(100, self.draw_line)
def draw_line(self):
r = self.ui.graphicsView.mapToScene(
self.ui.graphicsView.viewport().rect()
).boundingRect()
self.timeline_line_top = QtWidgets.QGraphicsLineItem(
QtCore.QLineF(r.bottomLeft(), r.topRight())
)
self.scene.addItem(self.timeline_line_top)
program = Main_Code()
主要内容:1. width,2. height,3. max-width 和 max-height,4. min-width 和 min-heightCSS 尺寸属性指的就是元素的宽度和高度属性,虽然说非常简单,但却是必须掌握的技能。CSS 中提供了 width、height、max-width、min-width、max-height 和 min-height 等几个属性来设置元素的宽度和高度,这些元素使用起来非常简单,下面我们就来简单介绍一下。 1. width 通过 width 属性可以设
前面我们提到HTML元素的尺寸(高或宽)是动态的,会随着内容调整。不过我们也可以为元素设定固定的尺寸大小。 blockquote{ width: 600px;} 上面的 blockquote 将始终保持600px的宽度,如果浏览器窗口小于600px,将显示一个水平滚动条。 因为我们只设置了宽度,那么这个 blockquote 的高度仍然是动态的,会自动调整来适应内容。 CSS 溢出(overflo
我的游戏使用什么高度和宽度有关系吗?在我的游戏中,我有几个多边形,它们都与我画过的图像相连,但当我有800x480的宽度和高度时,我必须把图像画得很小,这导致它们变得模糊。而且,我真的不明白这在不同尺寸的手机屏幕上是如何表现的…我所画的图像是被拉长了,还是它们仍然很小,即使是在大平板上?所以我的问题是,在一个libgdx游戏中,最优的宽度和高度是多少? 这是我代码的一部分,也许可以帮助您理解我的意
问题内容: 我试图找到屏幕的宽度和高度,但是我尝试过的任何方法都无法在我创建的类中使用,下面是我的代码。 有人知道如何找到它吗?我无法使用下面尝试的方式,因为.getWidth()已弃用? 问题答案: 使用以下代码
组件的高度和宽度决定了其在屏幕上显示的尺寸。 指定宽高 最简单的给组件设定尺寸的方式就是在样式中指定固定的 width 和 height 。React Native 中的尺寸都是无单位的,表示的是与设备像素密度无关的逻辑像素点。 export default class HelloWorld extends Component { render() { return ( <
我试图根据浏览器的最小高度和最小宽度在我的页面上更改CSS,所以我使用这个: 但出于某种原因,这不起作用。我可以检查“最小高度”和“最大宽度”(反之亦然),或者同时检查“最大高度”和“最大宽度”,但检查“最小高度”和“最大宽度”似乎都不起作用。 我应该详细说明这一点:我希望浏览器在最小高度或最小宽度变为真时起作用。仅当两个条件均为真时,使用and运算符才有效。 我做错什么了吗?