天天看点

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

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_()

继续阅读