我该如何调用方法?

时间:2012-06-14 13:13:04

标签: python user-interface methods

我不确定如何制作常用的实用程序文件并使用其中的方法。

以下是一个示例实用程序文件,它将窗口置于屏幕中心:

class center():
    fg = self.frameGeometry()
    cs = QtGui.QDesktopWidget().availableGeometry().center()
    fg.moveCenter(cs)
    self.move(fg.topLeft())

以下是一个示例UI:

import os, sys
import puppetUtils
from PyQt4 import QtCore, QtGui


class puppetUI(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self)

        self.setWindowTitle('Puppet')
        self.setObjectName('PuppetMainWindow')
        self.resize(1280, 720)

        puppetUtils.center(self)

        self.show()



app = QtGui.QApplication(sys.argv)
window = puppetUI()
sys.exit(app.exec_())

调用puppetUtils.center的正确方法是什么?我用Google搜索了很多方法,但它只是不起作用。这是一个例子 - 我用它来实现我的应用程序功能而不需要在各个类中复制/粘贴函数等等。

我需要实现的其他代码:

def mouseMoveEvent(self, event):
    #create the mouse 'Grab & Move'
    if self.moving: self.move(event.globalPos()-self.offset)

def mousePressEvent(self, event):
    if event.button() == QtCore.Qt.LeftButton:
        self.moving = True; self.offset = event.pos()


def mouseReleaseEvent(self, event):
    if event.button() == QtCore.Qt.LeftButton:
        self.moving = False

1 个答案:

答案 0 :(得分:2)

首先,改变

class center():

def center(var):

因为您实际上是在尝试定义效用函数,所以它应该是def而不是class

然后在center函数内,将self更改为var(或任何您想要命名的函数参数)