发帖记录一下困扰了很久的问题
本帖最后由 rxts 于 2025-1-16 21:43 编辑感谢论坛的帮助,在这里也为论坛做一点小小的贡献。
class MainWindowA(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.file = open('end_val.json', 'r+', encoding=de) # 读取 指标窗口个数
self.data = json.load(self.file)
self.init_ui()
'''
1. 弹出窗口可以跟随主窗口移动,2.在主窗口关闭时也随之关闭,3.不影响与其他窗口的交互,4.在与其他窗口交互时,弹出窗口保持可见性
以下1行时关键,以下1行要在,self.init_ui() 之后调用,使用self.setWindowFlags(Qt.FramelessWindowHint)设置无窗口
装饰,如果下面1行是在self.init_ui()之前调用要设置无窗口装饰需要使用:
self.setWindowFlags(Qt.Tool | Qt.FramelessWindowHint),注意这样就会导致上面的124不灵了。
'''
self.MySekect = MySekect(self) # 弹出的子窗口 在您的发帖中,您描述了一个关于 QMainWindow 和子窗口行为的问题。您希望实现以下功能:
[*]弹出窗口可以跟随主窗口移动。
[*]在主窗口关闭时也随之关闭。
[*]不影响与其他窗口的交互。
[*]在与其他窗口交互时,弹出窗口不关闭。
为实现这个功能,您已经在使用 self.setWindowFlags 来设置窗口属性。但要确保功能要求都能满足,可以尝试以下调整:
from PyQt5.QtWidgets import QMainWindow, QWidget
from PyQt5.QtCore import Qt
import json
class MainWindowA(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.file = open('end_val.json', 'r+', encoding='utf-8')# 确保编码使用正确的字符串
self.data = json.load(self.file)
self.init_ui()
# 设置子窗口
self.MySekect = MySekect(self)
self.MySekect.setWindowFlags(Qt.Tool | Qt.WindowStaysOnTopHint)# 设置子窗口属性
# 确保子窗口跟随父窗口关闭
self.destroyed.connect(self.MySekect.close)# 连接信号槽确保子窗口关闭
def init_ui(self):
# 您的初始化界面逻辑
pass
class MySekect(QWidget):# 假设MySekect继承自QWidget
def __init__(self, parent=None):
super().__init__(parent)
# 子窗口初始化内容
请确保在代码中处理编码问题,例如将 encoding=de 改为 ‘utf-8’。另外,使用 self.destroyed.connect(self.MySekect.close) 可以在主窗口销毁时自动关闭子窗口。希望这些建议能帮助您解决问题!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 FishC 发表于 2025-1-16 21:40
在您的发帖中,您描述了一个关于 QMainWindow 和子窗口行为的问题。您希望实现以下功能:
多谢,这个不是提问的,我是记录一下,对了MySekect(self)括号里填写self,就可以代替self.destroyed.connect(self.MySekect.close)
页:
[1]