python GUI 编程 --- tkinker on python3

隔壁是我的一个项目实例,对一下用法有实际使用:python 快速实践之:tkinker openpyxl点击打开链接

python作为脚本语言可以快速实现很多功能,不过有时候也希望能够有个比较简单的交互环境,用控制台方式的交互过于简陋,交互性也不能满足需要,因此抽时间自学了下简单的tkinker。

Tkinker是python自带的GUI库,目前只有非常简单的几个控件可以使用,大概试了下,效果图如下:

还有些别的没有去做demo,比如画布一类的,具体的可以参考菜鸟学院的介绍:http://www.runoob.com/python/python-gui-tkinter.html

复杂的如:comboBox/Grid/tableWidget等目前还没有。

由于之前用过C++的Qt和MFC以及C#相关的界面编程,这块的操作接受起来还是比较简单的。只需要注意一下几个点就可以入门:

1. 控件的初始化需要制定其ROOT,初始化之后需要将其挂上去,使用pack方法(控件嵌套在哪个root或者frame下就直接制定即可),

如:

tt = Text(frmB)    #frmB为一个frame

tt.insert(END, 'hello123\n')

tt.pack()
2. 窗口的布局依赖于frame控件:frame类似Qt的layout,是一个能挂控件的区域。

注意的是:

扫描二维码关注公众号,回复: 2974204 查看本文章

(1.)一旦使用了frame,所有的控件都需要挂在frame下,如果只有一个控件,则可以直接挂在root下面。

(2.) frame可以嵌套,主frame需要挂在root下。

(3.) frame也需要pack才能显示出来

如:

frm1 = Frame(root)

frmU = Frame(frm1)

frmB = Frame(frm1)

frmU.pack()

frmB.pack()

frm1.pack()
3.窗口建立需要自己的事件循环,直接给root打卡mainLoop即可:

如:

root.mainloop()

 

4. 控件的方法绑定:需要写一个独立方法,然后在控件初始化的时候把方法绑定到控件上:

def btnClicked():
    tt.insert(END, varList1.get())
btn1 = Button(frmB, text = '---OK---', fg = 'green', bg = 'red', command = btnClicked)# command link Cant contain ()

5. 控件的其他属性:

控件的各个属性都可以通过初始化挂上去,这里给大家推荐一个blog可以直接去查:

http://blog.csdn.net/yingshukun/article/details/78705337

 附上我的demo代码:

#import tkinter
from tkinter import *


root = Tk()

li = ['a', 'b', 'c']
movie = ['abc', 'ecd']
frm1 = Frame(root)
frmU = Frame(frm1)
frmB = Frame(frm1)
varList1 = StringVar()
listb = Listbox(frmU, listvariable = varList1)
listb2 = Listbox(frmU)
for item in li:
    listb.insert(0, item)
for item in movie:
    listb2.insert(0, item)
def print_item(event):
    print(listb2.get(listb2.curselection()))
listb2.bind('<ButtonRelease-1>', print_item)
listb.pack(side = LEFT)
listb2.pack(side = RIGHT)
frmU.pack()
var = StringVar()
lb = Entry(frmB, textvariable = var)
var.set("hello")
lb.pack(side = LEFT)
tt = Text(frmB)
tt.insert(1.0, 'hello\n')
tt.insert(END, 'hello123\n')
tt.insert(END, 'nono\n')
tt.pack()
def btnClicked():
    tt.insert(END, varList1.get())
btn1 = Button(frmB, text = '---OK---', fg = 'green', bg = 'red', command = btnClicked)# command link Cant contain ()
btn1.pack(side = RIGHT)
frmB.pack()
frm1.pack()
root.mainloop()

掌握了以上内容,基本上就可以设计出比较好用的小工具了,但是如果希望设计比较复杂的界面结构,用tkinker还是比较勉强。

猜你喜欢

转载自blog.csdn.net/u014339020/article/details/79505558