PYQT设计无边框窗体
#UI.py,通过UI设计师制作后直接转换为UI.py脚本
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName(_fromUtf8("Form"))
Form.resize(400, 300)
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(QtGui.QApplication.translate("Form", "Form", None, QtGui.QApplication.UnicodeUTF8))
#Main.py,可视化UI.py
# -*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui, Qt
from UI import *
class MainWindow(QtGui.QMainWindow):
def __init__(self,parent=None):
QtGui.QWidget.__init__(self,parent)
self.ui=Ui_Form()
self.ui.setupUi(self)
self.setWindowFlags(Qt.Qt.FramelessWindowHint)
#窗口无边框化,写于QMainwindow所在子类初始化函数中
#或者self.setWindowFlags(Qt.Qt.SplashScreen)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground, True)
#窗口背景透明
def mousePressEvent(self,event):
#定义鼠标点击事件
if event.button() == QtCore.Qt.LeftButton:
self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()
event.accept()
def mouseMoveEvent(self,event):
#定义鼠标移动事件
if event.buttons() ==QtCore.Qt.LeftButton:
self.move(event.globalPos() - self.dragPosition)
event.accept()
def resizeEvent(self,event):
#重绘窗体背景
image=QtGui.QImage()
image.load("images/background.png")
palette=QtGui.QPalette()
palette.setBrush(QtGui.QPalette.Window,QtGui.QBrush(image.scaled(event.size(),Qt.Qt.KeepAspectRatioByExpanding,Qt.Qt.SmoothTransformation)))
self.setPalette(palette)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
myapp=MainWindow()
myapp.show()
app.exec_()