学习Python⑷:Python开发过程中遇到的问题及解决办法

1、访问MS SQL Server 2000数据库时,返回的结果是乱码?
  这个实在是坑人啊!
  最开始学Python是上周,2020年1月7日,看到一个访问数据库的例子,想学一下Python,安装好环境,调试了一下数据就出来了,原来Python这么简单啊?!入门太容易了,难怪那么多人喜欢!
  晚上想写一个完整的访问数据库的程序,结果发现显示汉字是乱码,这个是编码问题,得到数据库的编码和Python使用的编码,再设置一下应该问题不大,结果还是不行,到网上搜啊搜,最后有了一个解决办法,就像这样:
  Item[1].encode('latin1').decode('gbk')
  所返回的字段数据如果是字符,加上.encode('latin1').decode('gbk')就可以了。
  汉字终于可以正常显示了。
  以为这样就解决了。
  结果程序还是报错,因为数字和日期的字段还是报错,那好吧,我做个类型判断type()就应该可以。可是返回结果为none的时候没有类型。
  那在数据库里放一个字段表,里面有数据类型,提取出来判断一下就应该可以了。
  终于可以全部显示了,为了这个问题,整整折腾了5个小时。
  保存数据又出问题了,记录修改后保存到数据库里还是乱码!
  先人板板,这是哪样啊?谁TMD说Python是最好用的开发语言?!这里面有这么多的坑啊?!
  在网上继续百度,看到用pyodbc可以,下载下来,一试验,全部OK了!
  最好的解决办法:使用pyodbc,我在https://pypi.org/下载的是对应的版本,pyodbc-4.0.30-cp37-cp37m-win_amd64.whl,到对应的目录下,执行:
  Pip install pyodbc-4.0.30-cp37-cp37m-win_amd64.whl

2、窗口大小不能改变
  原想这应该很简单,就是设置一下窗口的高和宽,写一个窗口居中的函数:

  def SetWindowCenter(WinID):                        # 将指定的窗口居中
      ScreenWidth = WinID.winfo_screenwidth()        # 获取屏幕的宽度
      ScreenHeight = WinID.winfo_screenheight()      # 获取屏幕的高度
      WinWidth=WinID.winfo_width()                   # 获取窗口的宽度
      WinHeight=WinID.winfo_height()                 # 获取窗口的高度
      WinSize = '%dx%d+%d+%d' % (WinWidth,WinHeight , (ScreenWidth - WinWidth) / 2, (ScreenHeight - WinHeight) / 2)
      WinID.geometry(WinSize)

  要使窗口居中的时候,调用一下就好了。
  可是怎么样都不行,窗口是可以居中,可大小不正常,很郁闷。
  结果,使用一下update()函数竟然就好了。
  原来,tk初始化时默认都是1,要想获取准确的位置和大小信息 必须调用update方法,刷新窗口才可以。
  用惯了其他开发工具,这样的逻辑很坑人啊,谁会注意到这一点?!

3、不能正常安装插件

  由于我使用的是代理,安装插件的时候总是报错的多,即使在https://pypi.org/上找到对应文件,在本地安装也不行。
  在写图形界面,要使用MDI窗体的时候tkinter就不行了,决定使用wxpython,可始终安装不上。
  结果,使用一下update()函数竟然就好了。
  上网查资料,找到解决办法:pip install wxpython -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
  原来pypi.douban.com是个镜像,这样安装就顺利多了。类似地,你也可以将wxpython换成你想要安装的插件名称来进行。

4、运行完成后总出现:libpng warning: iCCP: cHRM chunk does not match sRGB

  经过网络搜索,问题出现在QQ输入法,我直接卸掉就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值