新手,目前没有在研究了 现在把遇到的一些小问题放上来【有好的解决方法请评论告知,☺】
QT与PYQT出现问题解决
1关于QT 出现msvcp120.dll不存在问题(是安装的QTcreator,不是PYQT自带的QTdesigner)
先安装vcredist_x86 再安装vcredist_64 就会解决msvcp120.dll相关问题(至于为什么这样,我也不知道了,问题是解决了。╭(╯^╰)╮)
2关于QT creator 菜单栏的一个小BUG ——二级菜单无法直接输入中文
找个地方写,复制粘贴吧╭(╯^╰)╮
【可以在PYQT下改成中文,也是一个办法】
3关于pyqt4 安装一定要安装到python 的 python【\Lib\site-packages(其实只要是python下就好)】 路径下,并将pyuic4 与uic 中的pyuic.py中添加进环境变量path 。最后进入cmd 转到ui文件夹中 输入
Pyuic4 -o .py .ui 即可生成代码。(若不按照上述情况极有可能出现代码丢失)
ヾ(。`Д´。)
4窗口调用请用QEventLoop然后用exec_(),是个好东西。
mainwQe = QtCore.QEventLoop()
mainw = QtGui.QMainWindow()
w = Ui_MainWindow()
w.setupUi(mainw)
mainw.show()
mainwQe.exec_()
【哥的主窗口终于能点击button显示了】【能用就好不能纠结这个太多】
一开始是不太明白这个的,所以用了QDialog这个= =思路上是对的,但是调用了QDialog会自生成一个多余的对话框,而且关闭这个对话框所有都会关闭(:зゝ∠)。下面是错误的调用┑( ̄Д  ̄)┍
5关于中文编码问题━━∑( ̄□ ̄*|||━━这问题很坑啊
不能显示中文: QtGui.QMessageBox.information(self,u”错误”,self.tr(“用户信息错误”))
(╯‵□′)╯︵┻━┻这样肯定不行啊,虽然我不知道为啥人家教程可以,但我不行啊, 所以应该这样:QtGui.QMessageBox.information(self,u”错误”,self.trUtf8(“用户信息错误”))
【没错trUtf8 才是中文真爱】
6
QSqlDatabasePrivate::removeDatabase: connection ‘qt_sql_default_connection’ is still in use, all queries will cease to work.
QSqlDatabasePrivate::addDatabase: duplicate connection name ‘qt_sql_default_connection’, old connection removed.
=,=
http://blog.csdn.net/simmerlee/article/details/37872793:
QSqlDatabase db;
if(QSqlDatabase::contains(“qt_sql_default_connection”))
db = QSqlDatabase::database(“qt_sql_default_connection”);
else
db = QSqlDatabase::addDatabase(“QSQLITE”);
参考链接:http://www.tuicool.com/articles/2Ir26j
7.
在PYQT中打开数据库(来源于
http://www.microsofttranslator.com/bv.aspx?ref=SERP&br=ro&mkt=zh-CN&dl=zh&lp=EN_ZH-CHS&a=http%3a%2f%2fwww.rkblog.rk.edu.pl%2fw%2fp%2fqtsql-pyqt4-handling-databases%2f)
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtSql import *
app = QApplication(sys.argv)
w = QTextBrowser()
db = QSqlDatabase.addDatabase(“QMYSQL”);
db.setHostName(“localhost”)
db.setDatabaseName(“”)
db.setUserName(“root”)
db.setPassword(“”)
ok = db.open()
if ok:
w.insertHtml(‘Connected to MySQL
’)
else:
w.insertHtml(‘ERROR connecting to MySQL
’)
query = QSqlQuery(db)
if query.exec_(“SHOW DATABASES”):
w.insertHtml(‘
’)
while query.next():
table = query.value(0).toString()
w.insertHtml(‘%s
’ % table)
w.insertHtml('
')
w.insertHtml('TOTAL %s DATABASES' % query.size())
w.show()
sys.exit(app.exec_())
8.当槽不响应时候,检查一下信号写对没= =
9.关于Qstring的问题
(1)解决办法在该链接中有详细解答
http://blog.csdn.net/redhat7890/article/details/5374827
(2)遇到的错误
黄色部分为具体错误内容,在于QString的值问题
错误代码
修改后正确代码:
用参考blog里一句话就是:python string和PyQt的QString,是类型相似,不是相等。
10.在pyqt中获得的text,要用unicode()
11.两个文件中调用数组参数问题【脑子有限只能用这种-,-傻办法】
在action_mainwindowcheck.py中传入数组
若在jdcommon.py 中调用
其中传入到jdcommon.py的函数中pt0是一个元组
若想得到self.pt0 数组的值则需要用for 循环将 元组内的数组赋给
self.PreviewSQLList_TEXT0
此时self.PreviewSQLList_TEXT0 中的内容与self.pt0 相同
12.如何将数组做成字符串(参考网上教程)
s=[‘a’,’b’,’c’]
print ‘’.join(s)
print ‘-’.join(s)
输出结果
abc
a-b-c
13.数组,元组,字典 各种嵌套-,-很好玩哦
14.pyqt重置radio【为什么这样做,请看API文档】
#重置单选按钮的状态
self.ui.radioButtonTagText.setAutoExclusive(False)
self.ui.radioButtonTagAttribute.setAutoExclusive(False)
self.ui.radioButtonTagText.setChecked(False)
self.ui.radioButtonTagAttribute.setChecked(False)
self.ui.radioButtonTagText.setAutoExclusive(True)
self.ui.radioButtonTagAttribute.setAutoExclusive(True)
15.关于pyqt 读取文件QTextStream 与 QDataStream 读取文件问题(未解决)
16.Pyqt直接用python标准内置方法
17.pyqt 有些功能自带 例如下拉框自动补全查找,文本的右键菜单与键盘事件,这些都不需要自己去写,除非要做修改调整可重载编写
18.Pyqt 信号问题 要注意是否有该信号!
19.python 中如何判断list中是否包含某个元素
theList = [‘a’,’b’,’c’]if ‘a’ in theList:
print ‘a in the list’
if ‘d’ not in theList:
print ‘d is not in the list’
20.如果Python是用Anaconda装的,还需要运行PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64.exe 覆盖原有自带的pyqt,才会出现QTdesigner.= =注意版本问题,┑( ̄Д  ̄)┍想用pyqt5就自己去官网下。
如果不是,直接点击PyQt4-4.11.4-gpl-Py2.7-Qt4.8.7-x64.exe安装,注意路径是否自动寻找到python所在目录下