鱼C论坛

 找回密码
 立即注册
查看: 157|回复: 2

[技术交流] 发帖记录一下困扰了很久的问题

[复制链接]
发表于 2025-1-16 21:40:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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)    # 弹出的子窗口
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-1-16 21:40:56 | 显示全部楼层
在您的发帖中,您描述了一个关于 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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-1-16 21:49:10 | 显示全部楼层
FishC 发表于 2025-1-16 21:40
在您的发帖中,您描述了一个关于 QMainWindow 和子窗口行为的问题。您希望实现以下功能:

多谢,这个不是提问的,我是记录一下,对了MySekect(self)括号里填写self,就可以代替self.destroyed.connect(self.MySekect.close)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-2-5 14:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表