Python学习之使用ktinker的GUI设计

基础代码

from tkinter import *
import tkinter.messagebox as messagebox
class Application(Frame): #定义一个类,参数是frame,可以看做是控件的父容器
     def__init__(self,master=None):
         Frame.__init__(self,master,bg='red')
         self.pack()
         self.createWidgets()
     def createWidgets(self): #用于创建控件,是frame的子
         self.nameInput = Entry(self)
         self.nameInput.pack()#pack()方法把Widget加到父容器中,并实现布局
         self.alterButton = Button(self,text='hello',command=self.hello)
         self.alterButton.pack()
     def hello(self):#触发设置
         name = self.nameInput.get()
         messagebox.showinfo('message','hello,%s'%name)
root = Tk() #创建一个名为root的窗口
root.title('标题') 
root.wm_minsize(200,200)

app = Application(root) #窗口置于类中
app.mainloop() #运行,启动消息循环

checkbutton

from tkinter import *
root = Tk() #建立一个窗口
v = IntVar() #建立一个变量,选中为1,未选中为0
c = Checkbutton(root,text='Test',variable=v)
c.pack() #将控件放入root中,实现布局
l = Label(root,textvariable=v)
l.pack()
root.mainloop()

Radiobutton

from tkinter import *

def change():
    print(v.get())#取出变量v的值
root = Tk()
v = IntVar()

Radiobutton(root,text='one',variable=v,value=1,command=change).pack(anchor=W)
Radiobutton(root,text='two',variable=v,value=2,command=change).pack(anchor=W)
Radiobutton(root,text='three',variable=v,value=3,command=change).pack(anchor=W)

root.mainloop()

Entry

from tkinter import *

root = Tk()

input = Entry(root)
input.pack(padx=20,pady=20)

input.insert(0,'请输入内容')
 
root.mainloop()
from tkinter import *

root = Tk()

Lb1 = Label(root,text="作品:").grid(row=0,column=0)
Lb1 = Label(root,text="作者:").grid(row=1,column=0)

Ip1 = Entry(root)
Ip1.grid(row=0,column=1,padx=10,pady=5)
Ip2 = Entry(root)
Ip2.grid(row=1,column=1,padx=10,pady=5)

def show():
    print("作品:《%s》"%Ip1.get())
    print("作者:%s"%Ip2.get())

Button(root,text="获取数据",command=show).grid(row=3,column=0,sticky=W,padx=10,pady=5)
Button(root,text="退出",command=root.quit).grid(row=3,column=1,sticky=E,padx=10,pady=5)
#padx:x方向的外边距,ipadx:x方向的内边距
root.mainloop()

Canvas绘图

from tkinter  import *
master = Tk()
w  = Canvas(master,width=200,height=200)
w.pack()


line1 = w.create_line(0,50,200,50,fill="yellow")
line2 = w.create_line(100,0,100,100,fill="red",dash=(12,4)) #dash中元组第一个代表点划线长,第二个代表间隔长度
rect1 = w.create_rectangle(50,25,150,75,fill="blue")

w.coords(line1,0,25,200,25)    #坐标移动,至少4个参数,基本上就是重新绘制这条线
w.delete(line2) #删除这条线
w.itemconfig(rect1,fill="red")  #对某一个创建的图形项目进行配置属性
w.itemconfig(line1,fill="green")
w.create_text(100,50,text='fewa')
w.create_oval(40,20,160,80,fill="pink") #创建椭圆
w.create_arc(40,20,160,80,fill="blue",width=3)  #创建扇形需两个点,作为两个端点
w.create_polygon(40,20,160,80,30,10,40,20,fill="white") #绘制多边形,会自动封闭图形(首尾)
Button(master,text="删除所有",command=lambda x=ALL:w.delete(x)).pack()


master.mainloop()
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐