使用pyqt4开发GUI程序的问题总结

来源:互联网 发布:网络信息许可证 编辑:程序博客网 时间:2024/05/01 22:40

使用pyqt4开发GUI程序的问题总结

最近在用python开发一个应用程序,一开始使用的wxpython,后来觉得wxpython在布局和界面上不够美观,在网上看了一些pyqt开发的gui程序,觉得风格更加符合自己的要求,于是换了pyqt4进行开发,开发过程中遇到了一些问题,把他们记录下来,与大家分享。

  • QtDesigner产生的ui文件如何转换为py文件
  • pyqt中定时器的使用
  • pyqt中的一些命令
  • 小结

QtDesigner产生的ui文件如何转换为py文件

使用QtDesigner可以快速的搭建一个gui程序的界面,虽然一些设计上没有代码那么灵活(可能是我使用不太好),但是效率感觉比代码写上去要快很多。但是QtDesigner默认产生的是ui文件,要生成我们py文件,需要在命令行中执行以下代码:
pyuic -o 路径\xxx.py 路径\xxx.ui
使用该命令就可以在指定路径生成转换好的py文件了。
但是有一点要注意,生成的py文件直接运行是不会生成窗口的,因为其相当于只是替你完成了前端的设计,而生成具体的窗口还需要你自己进行一些修改。
针对dialog对话框需要进行的修改

class Ui_Dialog(QtGui.QDialog):    def __init__(self,parent=None):        QtGui.QWidget.__init__(self,parent)        self.ui=Ui_Dialog()# Ui_Dialog为.ui产生.py文件中窗体类名        self.ui.setupUi(self)    if __name__ == "__main__":        import sys        app = QtGui.QApplication(sys.argv)        myapp=Ui_Dialog()        myapp.show()        app.exec_()

针对MainWindows需要进行的修改

class Ui_MainWindow(QtGui.QMainWindow):     def __init__(self,parent=None):        QtGui.QWidget.__init__(self,parent)        self.ui=Ui_MainWindows()# Ui_MainWindows为.ui产生.py文件中窗体类名        self.ui.setupUi(self)if __name__ == "__main__":        import sys        app = QtGui.QApplication(sys.argv)        myapp=Ui_MainWindows()        myapp.show()        app.exec_()

转换过程中报错的查错
在开发过程中有一次ui与py的转换中出现了如下图问题:
这里写图片描述
通过提示我们可以看到可以通过-d去debug于是我们试一下命令:
pyuic -d search.ui
得到以下结果
这里写图片描述
经过修改检查,发现是字体设置的问题,把字体修改一下即可。

pyqt中定时器的使用

在程序开发中我需要实现一个类似屏保的功能,即当页面一段时间无人操作时,就将返回到屏保页面。这里我是使用定时器来实现此功能的。

self.timer = QTimer(self)self.count = 0self.timer.timeout.connect(self.showNum)self.startCount()

其中self.showNum()函数和self.startCount()函数函数都是自己定义的
slef.showNum()用来实现当定时器到达规定时间会执行对应操作

def showNum(self):        self.win2.close()#当定时器达到指定时间,执行方法showNum,关闭win2窗口

self.startCount()用来实现定时器的设置时间

def startCount(self):        self.timer.start(5000)#设置定时为5秒

pyqt中的一些命令

QtGui.QDesktopWidget().availableGeometry()此方法可以获取当前显示屏大小,返回Rect对象。
MainWindow.resize(width,height )用来重新设置窗口大小,不过参数是int型,可以联合上面两个方法使得gui程序自适应显示器大小
self.lineedit.setStyleSheet(“border-width:0;border-style:outset”)边框透明化
self.connect(self.lineedit, SIGNAL(“returnPressed()”), self.updateUi)用来设置事件响应,这个例子是设置当lineedit获取enter输入时,会执行updateUi方法。

小结

在pyqt安装后会有一个文件夹,里面有很多pyqt编写的demo,可以用来参考学习。在这次的开发中,还是有一些感悟的,感觉开发一个软件,即使是一个很简单的程序,都要投入很多的精力,才能达到自己想要的效果,而想要让自己写出来的东西至善至美,也要不断的学习~希望自己能养成,总结,提高的好习惯,第一篇原创的博文完成了~

0 0
原创粉丝点击