python-GUI的终极之选Tkinter(一)

可以从IDLE直接导入 import tkinter

第一步:了解

import tkinter  as tk

app =  tk.Tk()  #实例化GUI窗口对象
app.title("hello tkinter")#窗口标题

#label  
thelable = tk.Label(app,text="我的第一个窗口程序!")#窗口组件 , 标签内容
thelable.pack()#自动调节组件自身尺寸、位置

app.mainloop()#进入事件主循环  #进入之后将被tkinter接管

封装一下:做一个打招呼的按钮

pack方法也可以设置位置(前后左右,也可以微调) frame.pack(side=tk.LEFT, padx=10, pady=20)#设置框架位置, 间距

代码:

import tkinter  as tk

class APP:
    def __init__(self, master):
        frame = tk.Frame(master)#空框架,啥都没有,默认标题tk	
        frame.pack()
		#设置前景色,背景色
        self.hi_there = tk.Button(frame, text="hello !",bg='green',fg='blue', command=self.say_hi)
        self.hi_there.pack()

    def say_hi(self):
        print("my name is huahua!")
        
root = tk.Tk()#顶层窗口
app = APP(root)#实例化对象

root.mainloop()

第二步 : 理解组件 label 和 frame

from tkinter import *

root = Tk()

textLabel = Label(root, text="页面不友好哦")
textLabel.pack() #set postio保存n

photo = PhotoImage(file='19.gif')#图片路径png 或gif
imageLabel = Label(root, image=photo)
imageLabel.pack()#set position

mainloop()

python-GUI的终极之选Tkinter(一)_第1张图片

label组件

from tkinter import *

root = Tk()

photo = PhotoImage(file = ‘19.gif’)
label1 = Label(root,
text = ‘看妹子,关注我’,
justify = LEFT,#对齐方式
image = photo,
compound = CENTER,#混合模式,文字居中
font = (“华康少女字体”,20),
fg = ‘blue’ #文字前景色
)
mainloop()


看代码:

from tkinter import *

def callback():
    var.set('吹吧你,还想骗我!')



root =Tk()

#将框架放进窗体中
frame1  = Frame(root)
frame2  = Frame(root)

var = StringVar()
var.set('您所观看的内容不适合未成年人观看哦!')

#标签左对齐
textLabel = Label(frame1,
                  textvariable=var,  #显示一个tkinter类型的字符串变量 StringVar
                  justify = LEFT,
                  )
textLabel.pack(side =LEFT)
photo = PhotoImage(file='19.gif')

#图片右对齐
imageLabel = Label(frame1, image=photo)
imageLabel.pack(side = RIGHT)

#按钮                      按钮内容               按钮的响应,类似于信号槽   
theButton = Button(frame2, text='我已经满18岁了!',command=callback)
theButton.pack()

frame1.pack(padx =10, pady =10)
frame2.pack(padx =10, pady =10)


mainloop()

Checkbutton: 复选框



测试代码:

from tkinter import *

root = Tk()

#int类型变量
v = IntVar()

c = Checkbutton(root, text='test',variable =v)
c.pack()

#标签:展示在root实体中,展示内容: textvarble 
l = Label(root, textvariable = v)
l.pack()

mainloop()

下边看下效果对比和 代码


from tkinter import *

root = Tk();

girls =['大乔','公孙离','王昭君','瑶']


v =[]

for girl in girls:
    v.append(IntVar())
    b = Checkbutton(root, text = girl, variable = v[-1])
    b.pack(anchor = W)#设置对齐

mainloop()
发现Checkbutton可以多选

python-GUI的终极之选Tkinter(一)_第2张图片

RadioButton : 单选框

from tkinter import *

root = Tk()

#只创建一个变量
v = IntVar()

#原理:每一次点中一个按钮,会将按钮的value给v ,再反过来跟variable比较想通就选中。实现互斥。
Radiobutton(root, text ='One   girl',  variable=v, value = 1).pack(anchor=W)
Radiobutton(root, text ='Two   girls', variable=v, value = 2).pack(anchor=W)
Radiobutton(root, text ='Three girls', variable=v, value = 3).pack(anchor=W)

mainloop()

python-GUI的终极之选Tkinter(一)_第3张图片

我们看个细节 。我们设置两个value 为2 会发生什么

python-GUI的终极之选Tkinter(一)_第4张图片
果然,他就匹配了两个。

from tkinter import *


root = Tk()

girls = [('C++',1),
         ('Python',2),
         ('Java',3),
         ('Lua',4)]

v = IntVar()

for long, i in girls:
    #indicatoron指示器,设置为按钮格式fill= X 横向填充    fill=Y 纵向填充
    Radiobutton(root, text=long, variable =v, value = i,indicatoron=False).pack(fill=X)

mainloop()
    



from tkinter import *


root = Tk()

groupLabel = Label(root,text='最好的脚本语言是?',padx=10,pady=10)
groupLabel.pack(padx=10, pady=10)

girls = [('C++',1),
         ('Python',2),
         ('Java',3),
         ('Lua',4)]

v = IntVar()

for long, i in girls:
    #indicatoron指示器默认选择圆的,设置为按钮格式fill= X 横向填充    fill=Y 纵向填充
    Radiobutton(root, text=long, variable =v, value = i).pack(anchor=W,padx =10)

mainloop()
    

python-GUI的终极之选Tkinter(一)_第5张图片

你可能感兴趣的:(python)