Pyqt4无边框窗体拖动的代码

作者: aries 分类: Python 发布时间: 2012-10-22 17:04 ė 2063次浏览 6 0评论

这个UI是用Qt designer生成的,自己没有系统的学习过Python,有好多东西都走了弯路了!

这里记录一下,感谢google,感谢stackoverflow

只是有一样不爽,现在google.com.hk搜索出来的东西不能直接打开了,只能挂代理上....

代码:

# -*- coding: utf-8 -*-
# Created: Mon Oct 22 16:57:35 2012
#      by: PyQt4 UI code generator 4.9.5
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui ,Qt

try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
_fromUtf8 = lambda s: s

class Ui_myPopForm(object):
def setupUi(self, myPopForm):
myPopForm.setObjectName(_fromUtf8("myPopForm"))
myPopForm.setWindowModality(QtCore.Qt.NonModal)
myPopForm.resize(780, 600)
myPopForm.setStyleSheet(_fromUtf8("border:3px solid rgb(0, 0, 0);n"
"background-color: rgb(255, 255, 255);"))
self.centralWidget = QtGui.QWidget(myPopForm)
self.centralWidget.setObjectName(_fromUtf8("centralWidget"))
self.modelTopbar = QtGui.QLabel(self.centralWidget)
self.modelTopbar.setGeometry(QtCore.QRect(3, 3, 774, 40))
self.modelTopbar.setStyleSheet(_fromUtf8("background-color:#dddddd;border:0;border-bottom:1px solid #cccccc"))
self.modelTopbar.setText(_fromUtf8(""))
self.modelTopbar.setObjectName(_fromUtf8("modelTopbar"))
self.closeBtn = QtGui.QPushButton(self.centralWidget)
self.closeBtn.setGeometry(QtCore.QRect(753, 15, 15, 15))
self.closeBtn.setCursor(QtGui.QCursor(QtCore.Qt.PointingHandCursor))
self.closeBtn.setStyleSheet(_fromUtf8("border:0;background-image:url(images/top_close.png);"))
self.closeBtn.setText(_fromUtf8(""))
self.closeBtn.setObjectName(_fromUtf8("closeBtn"))
self.topTitle = QtGui.QLabel(self.centralWidget)
self.topTitle.setGeometry(QtCore.QRect(15, 15, 661, 16))
self.topTitle.setStyleSheet(_fromUtf8("border:none;background-color:none;n"
"font: 12pt "微软雅黑";"))
self.topTitle.setObjectName(_fromUtf8("topTitle"))
myPopForm.setCentralWidget(self.centralWidget)

    <span class="highlight-bp">self</span><span class="highlight-o">.</span><span class="highlight-n">retranslateUi</span><span class="highlight-p">(</span><span class="highlight-n">myPopForm</span><span class="highlight-p">)</span>
    <span class="highlight-n">QtCore</span><span class="highlight-o">.</span><span class="highlight-n">QObject</span><span class="highlight-o">.</span><span class="highlight-n">connect</span><span class="highlight-p">(</span><span class="highlight-bp">self</span><span class="highlight-o">.</span><span class="highlight-n">closeBtn</span><span class="highlight-p">,</span> <span class="highlight-n">QtCore</span><span class="highlight-o">.</span><span class="highlight-n">SIGNAL</span><span class="highlight-p">(</span><span class="highlight-n">_fromUtf8</span><span class="highlight-p">(</span><span class="highlight-s2">&#34;clicked()&#34;</span><span class="highlight-p">)),</span> <span class="highlight-n">myPopForm</span><span class="highlight-o">.</span><span class="highlight-n">close</span><span class="highlight-p">)</span>
    <span class="highlight-n">QtCore</span><span class="highlight-o">.</span><span class="highlight-n">QMetaObject</span><span class="highlight-o">.</span><span class="highlight-n">connectSlotsByName</span><span class="highlight-p">(</span><span class="highlight-n">myPopForm</span><span class="highlight-p">)</span>
    <span class="highlight-c1">#无边框</span>
    <span class="highlight-n">myPopForm</span><span class="highlight-o">.</span><span class="highlight-n">setWindowFlags</span><span class="highlight-p">(</span><span class="highlight-n">Qt</span><span class="highlight-o">.</span><span class="highlight-n">Qt</span><span class="highlight-o">.</span><span class="highlight-n">FramelessWindowHint</span><span class="highlight-p">)</span>

<span class="highlight-k">def</span> <span class="highlight-nf">retranslateUi</span><span class="highlight-p">(</span><span class="highlight-bp">self</span><span class="highlight-p">,</span> <span class="highlight-n">myPopForm</span><span class="highlight-p">):</span>
    <span class="highlight-n">myPopForm</span><span class="highlight-o">.</span><span class="highlight-n">setWindowTitle</span><span class="highlight-p">(</span><span class="highlight-sa">u</span><span class="highlight-s1">&#39;小米粥(xiaomizhou.net)&#39;</span><span class="highlight-p">)</span>
    <span class="highlight-bp">self</span><span class="highlight-o">.</span><span class="highlight-n">topTitle</span><span class="highlight-o">.</span><span class="highlight-n">setText</span><span class="highlight-p">(</span><span class="highlight-sa">u</span><span class="highlight-s1">&#39;小米粥(xiaomizhou.net)&#39;</span><span class="highlight-p">)</span>

class renderApp(QtGui.QMainWindow):
def init(self, parent=None):
super(renderApp, self).init(parent)
self.ui = Ui_myPopForm()
self.ui.setupUi(self)

<span class="highlight-k">def</span> <span class="highlight-nf">mousePressEvent</span><span class="highlight-p">(</span><span class="highlight-bp">self</span><span class="highlight-p">,</span><span class="highlight-n">event</span><span class="highlight-p">):</span>
   <span class="highlight-c1">#鼠标点击事件</span>
   <span class="highlight-k">if</span> <span class="highlight-n">event</span><span class="highlight-o">.</span><span class="highlight-n">button</span><span class="highlight-p">()</span> <span class="highlight-o">==</span> <span class="highlight-n">QtCore</span><span class="highlight-o">.</span><span class="highlight-n">Qt</span><span class="highlight-o">.</span><span class="highlight-n">LeftButton</span><span class="highlight-p">:</span>
       <span class="highlight-bp">self</span><span class="highlight-o">.</span><span class="highlight-n">dragPosition</span> <span class="highlight-o">=</span> <span class="highlight-n">event</span><span class="highlight-o">.</span><span class="highlight-n">globalPos</span><span class="highlight-p">()</span> <span class="highlight-o">-</span> <span class="highlight-bp">self</span><span class="highlight-o">.</span><span class="highlight-n">frameGeometry</span><span class="highlight-p">()</span><span class="highlight-o">.</span><span class="highlight-n">topLeft</span><span class="highlight-p">()</span>
       <span class="highlight-n">event</span><span class="highlight-o">.</span><span class="highlight-n">accept</span><span class="highlight-p">()</span>
<span class="highlight-k">def</span> <span class="highlight-nf">mouseMoveEvent</span><span class="highlight-p">(</span><span class="highlight-bp">self</span><span class="highlight-p">,</span><span class="highlight-n">event</span><span class="highlight-p">):</span>
   <span class="highlight-c1">#鼠标移动事件</span>
    <span class="highlight-k">if</span> <span class="highlight-n">event</span><span class="highlight-o">.</span><span class="highlight-n">buttons</span><span class="highlight-p">()</span> <span class="highlight-o">==</span><span class="highlight-n">QtCore</span><span class="highlight-o">.</span><span class="highlight-n">Qt</span><span class="highlight-o">.</span><span class="highlight-n">LeftButton</span><span class="highlight-p">:</span>
        <span class="highlight-bp">self</span><span class="highlight-o">.</span><span class="highlight-n">move</span><span class="highlight-p">(</span><span class="highlight-n">event</span><span class="highlight-o">.</span><span class="highlight-n">globalPos</span><span class="highlight-p">()</span> <span class="highlight-o">-</span> <span class="highlight-bp">self</span><span class="highlight-o">.</span><span class="highlight-n">dragPosition</span><span class="highlight-p">)</span>
        <span class="highlight-n">event</span><span class="highlight-o">.</span><span class="highlight-n">accept</span><span class="highlight-p">()</span>   

if name == "main":
import sys
app = QtGui.QApplication(sys.argv)
render = renderApp()
render.show()
sys.exit(app.exec_())

换一个
暂无评论
Ɣ回顶部