如何做出炒股软件附图指标的那种小窗口
如何做出炒股软件附图指标的那种小窗口,可以跟随主窗口移动并且可以根据主窗口的大小而变化。
我是通过将一个QWidget的子窗口嵌入QMainWindow主窗口的思路,但是我发现:
update_size方法中设置了子窗口的位置和大小,但是却没有按照我设置的尺寸显示,而且self.setWindowFlags(Qt.FramelessWindowHint)
这段代码也无效,问过ai了,给的三个方法,就这个还能显示,其他的连子窗口都不显示,之前在pyqt5中这段代码就可以运行,现在转到pyside6中
就不行了,实在找不到原因了
import os
import sys
import pandas as pd
import locale
de = locale.getpreferredencoding()
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
class MainWindowA(QMainWindow):
def init(self):
super().init()
self.init_ui()
def init_ui(self):
self.setWindowTitle("主窗口 B")
screen = QApplication.primaryScreen().geometry()
self.screenWidth = screen.width()
self.screenHeight = screen.height()
self.setGeometry(0, 0, int(self.screenWidth * 0.8), self.screenHeight)
self.mdi_area = QMdiArea()
self.setCentralWidget(self.mdi_area)
#
self.MainWindowB = MainWindowB()
self.mdi_area.addSubWindow(self.MainWindowB)
# self.MainWindowB.show()
def resizeEvent(self, event):
super().resizeEvent(event) # 调用父类的 resizeEvent 方法
new_size = event.size()
new_width = new_size.width()
new_height = new_size.height()
self.MainWindowB.update_size(new_width, new_height) # 自由指标窗口
class MainWindowB(QWidget):
def init(self):
super().init()
self.setWindowFlags(Qt.FramelessWindowHint)
# self.init_ui()
def init_ui(self):
self.setWindowTitle(“副窗口 B”)
def create_painter(self, qp, color, width):
qp.save()
pen = QPen(QColor(color), width)
qp.setPen(pen)
return qp
def paintEvent(self, event):
qp = QPainter(self)
# qp.setRenderHint(QPainter.Antialiasing)
self.create_painter(qp, Qt.red, 2).drawLine(0, self.height() -100, self.width()-600, self.height() -100)
print(‘a’)
def update_size(self, new_width, new_height):
y1 = int(new_height * 0.975)
y2 = int(new_height * 0.10417)
self.setGeometry(0, y1, new_width, y2)
self.update()
# MainWindowB子窗口为什么没有按照我设置的位置和大小显示
if name == ‘main‘:
app = QApplication(sys.argv)
main_window_a = MainWindowA()
main_window_a.show()
sys.exit(app.exec())
Set All widgets mouse tracking to True !