一、eric6中自动生成主体代码的解释
编写槽函数时:
系统自动生成:
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = MainWindow()
ui.show()
sys.exit(app.exec_())
语句解释,其中:
有可能这个窗口会被其他文件调用,所以写在if '__name__' == '__main__'里比较好。
app = QApplication(sys.argv)这是每一个QT窗口必须加载的,其中sys.argv参数可以写成[],它接受一个列表。
sys.argv的意思是在命令行下的 -m -a 什么的这些命令的列表集合。
if __name__ == "__main__":
每个python脚本在执行的时候,在内部生成一个属性name。如果这个文件自己运行,属性名称赋值为main,如果外部文件import而来,属性名称则不是main。
app = QtWidgets.QApplication(sys.argv):所有pyqt程序都需要创建一个app,
sys.exit(app.exec_()):app.exec_:exec_是系统自动在系统函数exec后边加一个_,为了与python系统函数区别。
特别注意:eric 自动生成的只是类,需要实例化
C#需要new函数,python用“=”(等号),如:ui = MainWindow()
二、模块未引入错误:name 'QtWidgets' is not defined,解决:from PyQt5 import QtWidgets
三、装饰器用法:@pyqtSignature("")
区别下面槽函数对应那个信号:
@pyqtSlot()
def on_pushButton_clicked(self):
"""
Slot documentation goes here.
"""
# TODO: not implemented yet
print (u"*")
self.label_2.setText("dddddd")
aa= (self.lineEdit.text())
self.textBrowser.append(aa)
print (self.textBrowser.toPlainText())
append追加,toPlainText显示到控制台。
四、Eric6中关键字或函数名区分大小写,如下:
print (self.lineEdit.Text()) ,提示错误:'QLineEdit' object has no attribute 'Text'
print (self.lineEdit.text()) ,则成功打印lineEdit控件内容。
五、编码问题
乱码解决:
方法一:print u'%s'self.lineEdit.text()
方法二:print unicode(self.lineEdit.text())
方法三:import sys
reload(sys)
sys.setdefaultencoding('utf8')
解码:string.decode('gbk')
六、杂记
下面两句效果完全不一样
ifself.radioButton_1.isChecked():
print("r1")
上句判断结果根据radioButton_1按钮是否被选,如果选中,输出r1,未选中,不输出。
ifself.radioButton_1.isChecked:
print("r1")
上句判断语句常为真,必定输出r1。
使按钮选中语句:self.radioButton_1.setChected(Ttre)
self.lcdNumber.display(value)
QMessageBox类:my_button=QMessageBox.information(self,'通知标题','通知详细内容')
提示:name 'QMessageBox' is not defined
from PyQt5.QtGui import *
from PyQt5.QtCore import *
PyQt5中为我们提供了很多默认信息框QMessageBox,注意为方便使用需要导入模块。这个函数应该在QWidgets里?
#Qt对话框:通知、询问、警告、严重警告、关于、关于Qt
a=QMessageBox.information(self, '我要退货', '怎么来', )
b=QMessageBox.question(self, "这是标题", "这是内容")
c=QMessageBox.warning(self, '标题','内容')
d=QMessageBox.critical(self, '标题', '内容')
e=QMessageBox.about(self,'标题', '内容')
f=QMessageBox.aboutQt(self, '标题')
print (a, b, c)
if b==65536: print('no')
if b==16384:
print('ooooooddss')
Qt标准输入对话框:支持4种数据类型:字符串,整形,浮点,下拉条目
Pyqt5系列(五)-基本界面组件之inputDialog - CSDN博客 http://blog.csdn.net/zhulove86/article/details/52515460
QInputDialog.getText函数输入两种信息,一个是输入内容,一个是窗体执行状态值,用一个元组接收。
c, d=QInputDialog.getInt(self, '框标题', '提示内容', 12, 10, 100)b, a=QInputDialog.getText(self, '框标题','内容上提示', QLineEdit.Normal, '输入位置内容')
注意:是getInt,不是getInteger(eric6中不认getInteger方法或属性),有些网上资料有误。
b, a=QInputDialog.getText(self, '框标题','内容上提示', QLineEdit.Normal, '输入位置内容')
print (a)
print (b)
my_list.append('苹果')
my_list.append('香蕉')
a, b=QInputDialog.getItem(self, '标题','提示内容', my_list)
提示:name 'QStringList' is not defined
解决方法: PyQT里没有Qt的QString,name 'List' is not definedQList,QStringList等
items = ["Spring", "Summer", "Fall", "Winter"]
a, b=QInputDialog.getItem(self, '标题','提示内容', items)
因为Qt是C++实现的,所以有List等概念的对象。但对于PyQt,因为python本身支持List等,所以就没有这个对象了。
in PyQt, there is no QString and hence no need for QStringList.
Any Qt API that would normally return a QString, will automatically return a Python string instead. Similarly, any Qt APIs that would normally return a QStringList will return a Python list containing Python strings. And the opposite also applies: any Qt API that would normally accept a QString or QStringList will accept the Python equivalents instead.
问题N:错误提示:the program has terminated with an exit status of 0
F2运行eric6中python脚本,提示:the program has terminated with an exit status of 0
其它Python IDE:Sublime Text
是一个代码编辑器(Sublime Text 2是收费软件,但可以无限期试用),也是HTML和散文先进的文本编辑器。Sublime Text是由程序员Jon Skinner于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的Vim。
Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。