第一次使用Tkinter的错误及经验总结

写智能算法大作业,最后需要做一个UI界面。第一次使用Tkinter,总的来说还算顺利,问题不大,基本都能解决。总之做的还挺成功[doge]

1.由于tkinter的兼容问题,只能显示特定格式的图片,jpg图片需要调用PIL库,用法见下面5的代码。
参考于:https://blog.csdn.net/fjdmy001/article/details/78498150

2.在定义子窗体的时候需要将函数Tk()改成Toplevel()。

3.对于button的调用函数,command()是错误的,要用lambda传参;并且,如果在循环内创建button,command的参数与循环变量有关,要注意冻结变量,否则循环结束变量为固定值,循环出错,所有按钮都显示为最后一次的结果。
参考于:https://blog.csdn.net/weixin_46180926/article/details/107968794

button = tk.Button(top1, image=image, height=100, width=100,
                           command=lambda i=i: generate(ind_list[i]))  # i是循环变量,generate是调用的函数

4.对于button和label,place函数失效,是因为place和pack不能同时使用,把pack去掉就好了。
参考于:https://blog.csdn.net/AshleyXM/article/details/104492553

5.标签背景变为透明,这个直接改变参数是不可行的。但是我猜想,想让标签变透明是因为加了背景图片,那就在图片上写字就好了,还有个问题就是文字只能显示在中间,参数compound设置为center。所以我的解决办法就是让标签和背景图片的颜色一样。。
参考于:https://blog.csdn.net/RNG_uzi_/article/details/89792518

# global image # 如果是函数内的图片,需要定义全局变量
photo = Image.open("C:\\Users\\Lenovo\\Desktop\\bg.jpg")   # 打开文件
photo = photo.resize((600, 600))                           # 调整图片大小
photo = ImageTk.PhotoImage(image=photo)                    # PIL处理
bglabel = tk.Label(window, justify='left', image=photo, compound='center')     # 背景图片作为标签,注意“compound”
bglabel.image = photo                                      # 要有这句话
bglabel.pack()                                             # pack()打包
lab = tk.Label(window, width=35, height=2, font=('微软雅黑', 12), bg='white',
               text='请选择一个你想实现的功能\nChoose one of the following four options')   # 文字作为标签
lab.place(x=110, y=75)                                     # 文字标签的位置,并打包

大概就这些问题吧,做的时候有一点点阻碍。还烦请各位批评指正!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值