Python学习之使用ktinker的GUI设计
程序员文章站
2022-01-30 20:48:10
...
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()