最近项目上又在做Python gui界面设计
看了看wxpython tkinter pyqt等等好几个以后,还是决定用tkinter学习成本比较低,做起来也相对容易一些
做起来遇到以下几个问题:
1.界面卡死(这个问题很严重,也困扰了我很久,mmp)
2.界面布局
3.按钮传参
4.entry传var
解决办法:
1.界面卡死问题:
把执行的计算过程全都放在thread子线程里面(子线程和主线程的区分,主线程:整个程序,子线程:threading.Thread(target = ,args = ())创建的线程)
这样,tkinter界面不再卡死,结果通过子线程中调用主线程tk界面的组件来展示
2.界面布局:
这个比较简单,直接pack就行
复杂一点的可以添加框架frm = Frame(tk_obj)
3.按钮传参:
找了半天,就一个方法,lambda : func(args*)
func函数
args该函数的参数
因为本身Button是不可以传递参数的
4.entry传var:
我主要是想通过输入,往程序中传递数据
设计个函数
def get_value():
global change_value
change_value = var.get()
因为是button调用的函数,无法传递结果,就只能通过改变全局变量
(ps:当然也可以把后面的内容全部写入到这个函数里面,但感觉那样得不偿失,后来就没有弄了)