PyQt指定坐标处的无框窗口

时间:2015-03-10 09:39:55

标签: python qt user-interface pyqt

经过大量谷歌搜索后,我知道我需要使用self.setWindowFlags(QtCore.Qt.FramelessWindowHint)

生成无框窗口,以及坐标(0,0)的一些变体,将其放置在屏幕的左上角。

我遇到的问题是,无论我尝试使用此代码,它都会产生错误,即使在我稀疏的现有代码中也是如此:

from PyQt4 import QtCore, QtGui
from ui.mainwindow import MainWindow

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    ui = MainWindow()
    ui.show()
    sys.exit(app.exec_())

经过大量谷歌搜索后,我无法为其他人提供适合我的解决方案。 在屏幕左上角显示我的窗口没有边框的神奇语法是什么?

2 个答案:

答案 0 :(得分:5)

事实证明我有很多东西可以学习Python和层次继承/什么属于什么,我正在寻找的代码是:

from PyQt4 import QtCore, QtGui
from ui.mainwindow import MainWindow

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    ui = MainWindow()
    ui.setWindowFlags(QtCore.Qt.FramelessWindowHint)
    ui.move(0, 0)
    ui.show()
    sys.exit(app.exec_())

尤里卡时刻意识到MainWindow在变量ui下以速记伪装。为了别人的利益,就像我一样。

答案 1 :(得分:1)

基本上,如果您只是设置了Frameless标志,那么您仍然需要保留一大堆应用于QWidgetQMainWindow s的默认标志。

如果您还包含将清除所有以前标记的CustomizeWindowHint,然后在您要使用的其他标记中添加bitwise or:请参阅|运算符。

http://doc.qt.io/qt-5/qt.html#WindowType-enum

http://doc.qt.io/qt-5/qwidget.html#setAttribute

http://doc.qt.io/qt-5/qt.html#WidgetAttribute-enum

http://doc.qt.io/qt-5/qwidget.html#pos-prop

http://doc.qt.io/qt-5/application-windows.html#window-geometry

我会在几分钟内发布一个代码段。

更新:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint | Qt::Tool);
//    w.setAttribute(Qt::WA_TranslucentBackground);
    w.move(0,0);
    w.show();

    return a.exec();
}

希望有所帮助。