我最近一直在学习python,现在我想(尝试)创建我的第一个真正的应用程序,一个Linux的字幕播放器。到目前为止,我一直在使用Greenfish字幕播放器,它针对的是Windows用户,而不是在Linux中正常工作。
我想在qt中创建应用程序,因为我发现在tkinter中无法实现透明窗口,但如果有人知道更好的框架,请提示!
现在开始之前,我已经研究了几个小时的网络,发现如何让我的应用程序显示在一个完整的屏幕Flash视频上,似乎这是不可能的。然而,前面提到的GF字幕播放器设法在Windows中这样做,但不是在Linux中(也许这也是因为它正在通过葡萄酒运行)。
所以我的问题是有可能创建一个透明的应用程序,它仍然是一个完整的Flash视频,如果是这样,你能指出我正确的方向吗?
提前致谢。
编辑: 这里是我一直在尝试的一些示例代码。这段代码生成的窗口不会停留在全屏视频之上
import sys
from PyQt4 import QtGui, QtCore
class mymainwindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self, None, QtCore.Qt.WindowStaysOnTopHint)
app = QtGui.QApplication(sys.argv)
mywindow = mymainwindow()
mywindow.show()
app.exec_()
mywindow.show()
答案 0 :(得分:7)
更新PyQt5 pip install PyQt5
import sys
from PyQt5 import QtGui, QtCore, uic
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QMainWindow, QApplication
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
self.setWindowFlags(
QtCore.Qt.WindowStaysOnTopHint |
QtCore.Qt.FramelessWindowHint |
QtCore.Qt.X11BypassWindowManagerHint
)
self.setGeometry(
QtWidgets.QStyle.alignedRect(
QtCore.Qt.LeftToRight, QtCore.Qt.AlignCenter,
QtCore.QSize(220, 32),
QtWidgets.qApp.desktop().availableGeometry()
))
def mousePressEvent(self, event):
QtWidgets.qApp.quit()
if __name__ == '__main__':
app = QApplication(sys.argv)
mywindow = MainWindow()
mywindow.show()
app.exec_()
答案 1 :(得分:4)
下面的示例代码将创建一个居中的无框窗口,该窗口应该位于Linux上的所有其他窗口之上(您可以单击窗口将其关闭)。
import sys
from PyQt4 import QtGui, QtCore
class mymainwindow(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.setWindowFlags(
QtCore.Qt.WindowStaysOnTopHint |
QtCore.Qt.FramelessWindowHint |
QtCore.Qt.X11BypassWindowManagerHint
)
self.setGeometry(QtGui.QStyle.alignedRect(
QtCore.Qt.LeftToRight, QtCore.Qt.AlignCenter,
QtCore.QSize(220, 32),
QtGui.qApp.desktop().availableGeometry()))
def mousePressEvent(self, event):
QtGui.qApp.quit()
app = QtGui.QApplication(sys.argv)
mywindow = mymainwindow()
mywindow.show()
app.exec_()