如何解决QT widget 转py文件后,运行的GUI界面和在QT中运行的不一样的问题

用qtwidget编写了一个窗口,为了实现背景透明和取消头部的最小化关闭等按钮,在mainwindow.cpp中编写了以下代码

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)

{
    ui->setupUi(this);
    setAttribute(Qt::WA_TranslucentBackground);//这句是添加的
    setWindowFlags(Qt::FramelessWindowHint);//这句是添加的

}

MainWindow::~MainWindow()
{
    delete ui;

}


结果如下图:

img

然后在cmd中用这句命令使ui文件转为pyuic5 -o mainwindow.py mainwindow.ui 把ui文件转成了py文件。但是在python里运行后变成了这样

在python里pyqt5运行的结果

img

想问一下是不是在cpp中写过代码后,要进一步操作再转换才能使pyqt5输出的结果和qt中的ui结果一样?请教懂哥帮忙解决

已解决:

self.ui = uic.loadUi('Login/loginQt/loginUI.ui')#用这句话把ui界面变成一个实例化对象导入py文件中
            
self.ui.setWindowFlags(QtCore.Qt.FramelessWindowHint)#去除最大最小化
self.ui.setAttribute(QtCore.Qt.WA_TranslucentBackground)#主窗体透明背景
#再用上面两句实现功能

如果你要使转换后的 Python 程序和在 Qt 中的效果一样,
那你就要在 Python 程序中再次添加设置窗口属性的代码 就像在 C++ 中一样
在 mainwindow.py 文件中,把下面代码添加到主窗口的初始化方法中


class Ui_MainWindow(object):
    # ...

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow, self).__init__(parent)
        self.setupUi(self)
        self.setAttribute(Qt.WA_TranslucentBackground)
        self.setWindowFlags(Qt.FramelessWindowHint)


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

只是把ui转成了py

setAttribute(Qt::WA_TranslucentBackground);//这句是添加的
setWindowFlags(Qt::FramelessWindowHint);//这句是添加的

这两句你还要在代码里写上