一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

pyqt4制作透明無(wú)邊框窗體

 心靜水境 2018-06-20

用PyQt做了一個(gè)無(wú)邊框登陸窗口,效果如下:


下面是代碼:

# -*- coding: utf-8 -*-

from PyQt4 import QtGui ,Qt ,QtCore

 

image=QtGui.QImage()

bgImage=image.load("images/logins.png")

 

class labelBtn(QtGui.QLabel):

    """

    自定義圖片按鈕類(lèi)

    """

    def __init__(self,ID):

        super(labelBtn, self).__init__()

        self.setMouseTracking(True)

        self.ID=ID

   

    def mouseReleaseEvent(self,event):  #注:

        #鼠標(biāo)點(diǎn)擊事件

        self.parent().btnHandle(self.ID)

   

    def enterEvent(self,event):

        #鼠標(biāo)進(jìn)入時(shí)間

        self.parent().btnEnter(self.ID)

   

    def leaveEvent(self,event):

        #鼠標(biāo)離開(kāi)事件

        self.parent().btnLeave(self.ID)

      

class login(QtGui.QMainWindow):

    def __init__(self,parent=None):

        super(login, self).__init__(parent)

        self.setWindowTitle(u"學(xué)生體能健康測(cè)試軟件")

        self.setFixedSize(347,264)

        self.setWindowIcon(QtGui.QIcon("images/umbrella.png"))

        #窗口居中顯示

        desktop =QtGui.QApplication.desktop()

        width = desktop.width()

        height = desktop.height()

        self.move((width - self.width())/2, (height - self.height())/2)

        self.setMouseTracking(True)

        #無(wú)邊框

        self.setWindowFlags(Qt.Qt.FramelessWindowHint)

        #顯示托盤(pán)信息

        self.trayIcon = QtGui.QSystemTrayIcon(self)

        self.trayIcon.setIcon(QtGui.QIcon("images/umbrella.png"))

        self.trayIcon.show()

        self.trayIcon.activated.connect(self.trayClick)       #點(diǎn)擊托盤(pán) 

        self.trayMenu()                                       #右鍵菜單               

 

        label_user = QtGui.QLabel(u"賬號(hào)",self)

        label_user.setGeometry(QtCore.QRect(125, 135, 50, 22))

        label_passwd = QtGui.QLabel(u"密碼",self)

        label_passwd.setGeometry(QtCore.QRect(125, 170, 50, 22))

     

        self.label = QtGui.QLabel(self)

        self.label.setGeometry(QtCore.QRect(19, 129, 80, 80))

        self.label.setPixmap(QtGui.QPixmap("images/teacher.png"))

     

        self.lineEdit_user = QtGui.QLineEdit(u"root",self)

        self.lineEdit_user.setGeometry(QtCore.QRect(160, 135, 150, 22))

     

        self.lineEdit_passwd = QtGui.QLineEdit(u'1234',self)

        self.lineEdit_passwd.setGeometry(QtCore.QRect(160, 170, 150, 22))

        self.lineEdit_passwd.setEchoMode(QtGui.QLineEdit.Password)

        self.lineEdit_passwd.setValidator(QtGui.QRegExpValidator(Qt.QRegExp("[A-Za-z0-9]+"),self))

        #這里也可以設(shè)置QLineEdit背景為透明

        self.pushButton_login = QtGui.QPushButton(QtGui.QIcon("images/login.png"),u"登錄",self)

        self.pushButton_login.setGeometry(QtCore.QRect(250, 235, 75, 22))

     

        self.pushButton_change = QtGui.QPushButton(QtGui.QIcon("images/onetwo.png"),u"身份切換",self)

        self.pushButton_change.setGeometry(QtCore.QRect(10, 235, 75, 22))

        self.pushButton_change.setFlat(True)

        self.pushButton_change.setContextMenuPolicy(Qt.Qt.CustomContextMenu)

     

        self.btn_min=labelBtn(1)               #定義最小化按鈕 ID:1

        self.btn_min.setParent(self)

        self.btn_min.setGeometry(281,0,27,23)

        self.btn_min.setToolTip(u"最小化")

     

        self.btn_close=labelBtn(2)              #定義關(guān)閉按鈕 ID:2

        self.btn_close.setParent(self)

        self.btn_close.setGeometry(310,0,38,21)

        self.btn_close.setToolTip(u"關(guān)閉")

     

        self.connect(self.pushButton_change, QtCore.SIGNAL("clicked()"),self.contextMenu)

        self.connect(self.pushButton_login, QtCore.SIGNAL("clicked()"),self.log_in)

      

    def contextMenu(self):
   
        self.userOption = QtGui.QAction(QtGui.QIcon("images/user.png"),u"學(xué)生", self)
   
        self.rootOption = QtGui.QAction(QtGui.QIcon("images/root.png"),u"老師", self)
   
       
   
        self.userOption.triggered.connect(self.user)
   
        self.rootOption.triggered.connect(self.root)
   
       
   
        menu = QtGui.QMenu(self)
   
        menu.addAction(self.rootOption)
   
        menu.addAction(self.userOption)
   
        menu.exec_(QtGui.QCursor.pos())

      

    def root(self):

       self.pushButton_change.setText(u"老師")

       self.label.setPixmap(QtGui.QPixmap("images/teacher.png"))

      

    def user(self):

        self.pushButton_change.setText(u"學(xué)生")

        self.label.setPixmap(QtGui.QPixmap("images/students.png"))

      

    def log_in(self):

        dlg=QtGui.QMessageBox(self)

        dlg.information(self, u"提示",u"應(yīng)該跳向另一個(gè)窗口,這里沒(méi)有寫(xiě)!",QtGui.QMessageBox.Ok)       

          

    def btnHandle(self,ID):

        #最小化

        if ID==1:

            self.hide()

            self.showMinimized()

        elif ID==2:

           #關(guān)閉

           self.trayIcon.hide()

           self.close()

                      

    def btnEnter(self,ID):

       #鼠標(biāo)進(jìn)入

       if ID == 1:

           self.btn_min.setPixmap(QtGui.QPixmap("images/min.png"))

       elif ID == 2:

           self.btn_close.setPixmap(QtGui.QPixmap("images/close.png"))

 

    def btnLeave(self,ID):

       #鼠標(biāo)離開(kāi)

       '''false.png這張圖片是不存在的,目的是要在鼠標(biāo)

        離開(kāi)后還原背景,因?yàn)槟J(rèn)按鈕我已經(jīng)PS在背景上了'''

       self.btn_min.setPixmap(QtGui.QPixmap("images/false.png"))

       self.btn_close.setPixmap(QtGui.QPixmap("images/false.png"))

                   

    def trayClick(self,reason):

       #雙擊托盤(pán)

       if reason==QtGui.QSystemTrayIcon.DoubleClick:

           self.showNormal()

       else:

           pass

      

    def trayMenu(self):

       #右擊托盤(pán)彈出的菜單

       img_main = QtGui.QIcon("images/main.png")

       img_exit = QtGui.QIcon("images/exit.png")

       self.trayIcon.setToolTip(u"學(xué)生體能健康測(cè)試軟件")

       self.restoreAction = QtGui.QAction(img_main,u"打開(kāi)主窗口", self)

       self.restoreAction.triggered.connect(self.showNormal)

       self.quitAction = QtGui.QAction(img_exit,u"退出", self)

       self.quitAction.triggered.connect(QtGui.qApp.quit)

       self.trayIconMenu = QtGui.QMenu(self)

       self.trayIconMenu.addAction(self.restoreAction)

       self.trayIconMenu.addSeparator()

       self.trayIconMenu.addAction(self.quitAction)

       self.trayIcon.setContextMenu(self.trayIconMenu)

      

    def resizeEvent(self,event):

       #重繪窗體背景

       pal=QtGui.QPalette()

       pal.setBrush(QtGui.QPalette.Window,QtGui.QBrush(image.scaled(event.size(),

           Qt.Qt.KeepAspectRatioByExpanding,Qt.Qt.SmoothTransformation)))

       self.setPalette(pal)

 

    """下面這兩個(gè)才是重點(diǎn),是動(dòng)得關(guān)鍵"""

    def mousePressEvent(self,event):

       #鼠標(biāo)點(diǎn)擊事件

       if event.button() == QtCore.Qt.LeftButton:

           self.dragPosition = event.globalPos() - self.frameGeometry().topLeft()

           event.accept()

   

    def mouseMoveEvent(self,event):

       #鼠標(biāo)移動(dòng)事件

        if event.buttons() ==QtCore.Qt.LeftButton:

            self.move(event.globalPos() - self.dragPosition)

            event.accept()   

 

if __name__ == "__main__":

    import sys

    app = QtGui.QApplication(sys.argv)

    frm = login()

    frm.show()

    sys.exit(app.exec_())

 

:目前的問(wèn)題是QLabel相應(yīng)的是點(diǎn)擊事件,不是單擊事件,這個(gè)問(wèn)題還沒(méi)用解決!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    欧美成人免费夜夜黄啪啪| 偷拍美女洗澡免费视频| 99亚洲综合精品成人网色播| 高清亚洲精品中文字幕乱码| 国产又猛又大又长又粗| 国内外免费在线激情视频| 国产亚洲中文日韩欧美综合网| 成年人黄片大全在线观看| 日本一区二区三区久久娇喘| 亚洲香艳网久久五月婷婷| 大香蕉网国产在线观看av| 欧美成人国产精品高清| 婷婷伊人综合中文字幕| 99香蕉精品视频国产版| 日韩欧美一区二区不卡看片| 欧美成人精品一区二区久久| 五月婷婷亚洲综合一区| 国产韩国日本精品视频| 中文字幕亚洲在线一区| 一区二区三区精品人妻| 欧美日韩有码一二三区| 欧美成人一区二区三区在线| 冬爱琴音一区二区中文字幕| 国产精品夜色一区二区三区不卡| 国产精品白丝一区二区| 不卡免费成人日韩精品| 儿媳妇的诱惑中文字幕| 日韩欧美精品一区二区三区| 国产成人午夜在线视频| 国产又大又硬又粗又黄| 儿媳妇的诱惑中文字幕| 人妻熟女欲求不满一区二区| 中文字幕禁断介一区二区| 日本精品免费在线观看| 国产爆操白丝美女在线观看| 亚洲一区二区欧美激情| 亚洲男人的天堂色偷偷| 中文日韩精品视频在线| 国产精品一区二区视频大全| 国产高清精品福利私拍| 精品人妻一区二区三区免费|