Tkinter 绑定 变量

chinasuzhou2500 Python GUI 入门 最后由 chinasuzhou2500 于2016年06月12日回复

  • 2 回答
  • 2.2k 浏览

老师好:问题描述如下:

目标:构建一个Tk窗口并显示一个Button。Button的text和bg参数根据后台产生的随机数大小(0-100)判断并实时改变。

解决思路:

1,导入random和time模块,间隔一秒产生一个随机数(0-100)

2,逻辑:如果随机数>50,Button的text和bg设为(“高”,“red”),否则设为(“低”,“green”)

3,导入Tkinter设计一个窗体并设置一个Button。

目前:以上三个功能步骤单独实现都没问题。但是每次运行后都需要关闭窗口再次运行,不能实现窗口不变,Button的text和bg随后台的随机数大小显示不同的文本和颜色。

认知:

1,后台不断的产生随机数需要一个循环一直运行,窗口的mainloop()也是一个循环需要一直运行。理论上这两个循环是不能同时存在的,一定有先后顺序(可以这样理解?)。

2,可否有方法先运行产生随机数循环,后运行mainloop,再回到随机数循环中。这样实现一个大循环里面两个小循环?

3,很多编码细节学习视频后都能大概理解,编码的时候再google一般小问题都能解决。老师是否可以增加一些项目的实际案例讲解具体项目的代码组织和思路。或者拿一些现成的代码作为案例讲解。

4,此类问题的最佳实现什么?

5,实际项目背景:在一个界面上创建约100个组件,用于显示通过串口采集到的传感器开关或数值区间状态。

  • 韦玮 2016年06月08日 回答 #1楼
  • 兄弟,您好,这是一个界面实时刷新的问题,分别回答一下您的问题:

    1、可以这样理解。

    2、循环嵌套的方式也行,但在界面实时刷新问题上,一般不使用这种方式,一般在循环随机数生成后,使用update_idletasks的方式实现更新界面。

    3、可以增加的,没问题。

    4、此问题最佳解决思路就是如第二点所说,一般不用mainloop(),而使用update_idletasks方法,可以参照如下资料:https://bytes.com/topic/python/answers/31461-tkinter-update_idletasks

    5、该实际项目中,是否采集的数据也需要实时更新,若需要实时更新,请同样尝试update_idletasks方法。

  • 1 评论