如何做出炒股软件附图指标的那种小窗口 | python | python 技术论坛-大发黄金版app下载
如何做出炒股软件附图指标的那种小窗口,可以跟随主窗口移动并且可以根据主窗口的大小而变化。
我是通过将一个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 !