天天看點

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

繼續閱讀