控件的难点与关键点
1.复选按钮
注意啊啊啊:上面我写的三点步骤必有,你每次用到复选按钮都会写
代码如下:
import tkinter as tk
top=tk.Tk()
rt=tk.StringVar()#创建字符变量,用来存字符'1','2','3',
#如果传入的值为'1',就选radio1
rt.set('0')#初始化按钮
ra1=tk.Radiobutton(text='radio1',value='1',variable=rt)#将rt与ra1按钮相关联
ra1.pack()
print(ra1)
ra2=tk.Radiobutton(text='radio2',value='2',variable=rt)
#print(ra2)
ra2.pack()
#print(ra2)
ra3=tk.Radiobutton(text='radio3',value='3',variable=rt)
ra3.pack()
#print(ra3)
ct=tk.IntVar()
ct.set(2)
cheak=tk.Checkbutton(text='Checkbutton',variable=ct,onvalue=1,offvalue=2)#如果选中名字为Checkbutton的按钮cheak,则将值1放入ct.get()
cheak.pack()
top.mainloop()
'''print(ra1.get())
print(ra2.get())'''
效果如下:
2.信息框
一定要注意导入
并且我写出来两种导入的区别,如下
简单的输入对话框
from tkinter import *
from tkinter.simpledialog import *
from tkinter import simpledialog
root= Tk()
root.geometry("400x100")
show= Label(root,width=40,height=3,bg="green")
show.pack()
a=askinteger(title="输入年龄",prompt="请输入年龄 ",initialvalue=18,minvalue=1,maxvalue=150)#创建了一个输入对话框
print(str(a))
show["text"]="年龄:"+str(a)#根窗口的标签内容为'年龄18或者输入的其他数字'
#askfloat,askstring 自行测试
root.mainloop()
效果如下:
通用消息对话框
#简单对话框
from tkinter import *
from tkinter.messagebox import *
root= Tk()
root.geometry("400x100")
c1=Label()
c1.pack()
#a1= showinfo(title="关关雎鸠",message="好好学习,天天向上")#只会返回0k
a1=askyesno('我自己最大','大脑低级')#只会返回Ture/False
c1['text']=str(a1)+'我'
print(a1)#输出的为ok,因为你选了ok,没有选cancle
root.mainloop()
一定要注意不同方法的返回值不同
例如askyesno返回True,其他的上述代码解释够清楚了,宝子们
文件对话框
from tkinter import *
from tkinter.filedialog import *
root= Tk()
root.geometry("400x100")
show= Label(root,width=40,height=3,bg="green")#创建一个标签并且要显示
show.pack()
def test1():
f= askopenfilename(title="上传文件",initialdir="c:/code",filetypes=[('文件类型','.txt')])#创建文件对话框,返回打开的文件名
#print(f)
show['text']=f #标签的显示的内容是 文件名 标签本身就是用来显示图片和文字的
Button(root,text="选择编辑的文本文件",command=test1).pack()#点击一下按钮,则回调函数test1,执行 往标签里添加内容
root.mainloop()
效果宝子们,可以复制代码运行一下
宝子们,你们一定要看图片写的内容和我代码的解释,这样你就能理解代码的含义了.
3.菜单选项
话不多说了,只要添加菜单选项必有以上步骤.
上代码:
#记事本软件,练习主菜单的设计
from tkinter import *
from tkinter.filedialog import *
root= Tk()
root.geometry("400x400")
#创建主菜单栏
menubar= Menu(root)
#创建子菜单
menuFile= Menu(menubar)
menuEdit= Menu(menubar)
menuHelp= Menu(menubar)
#将往主菜单的子菜单里添加'''例如往'文件'主菜单里添加添加子菜单
menubar.add_cascade(label="文件(F)",menu=menuFile)
menubar.add_cascade(label="编辑(E)",menu=menuEdit)
menubar.add_cascade(label="帮助(H)",menu=menuHelp)
filename= ""
'''def openFile():
global filename
with askopenfile(title="打开文件") as f:
content =f.read()
w1.insert(INSERT,content)
filename =f.name
print(f.name)'''
def saveFile():
lab.config(text='做保存要做的事')#标签里的text是用来显示文字和图片的#####
def exit():
root.quit()#整个窗口退出
#添加菜单项
#menuFile.add_command(label="打开",command=openFile)#将'打开'添加到子菜单 menuFile中 一点击子菜单'打开'就会回调函数openFile
menuFile.add_command(label="保存",command=saveFile)
menuFile.add_separator() #添加分割线
menuFile.add_command(label="退出",command=exit)
#将主菜单栏加到根窗口
root["menu"] =menubar
#w1= Text(root,width=50,height=30)
#w1.pack()
lab=Label(bd=2,width=23,height=1)
lab.pack()
root.mainloop()
最后为宝子们送上GUI页面的两种写法
1.金典写法
from tkinter import *
from tkinter import messagebox
import tkinter.messagebox #与上面的不一样
from tkinter.messagebox import * #########没有使用
class Application(Frame):#类Application继承了父类Frame及其父类的特性
def __init__(self,master=None):#通过构造函数初始化窗口中的对象 #注意传入参数的形式master=root#####
super().__init__(master)#调用父类的初始化 ####注意括号里的内容
self.master=master
self.pack()
self.createWidget()#初始化你创建的所有组件
def createWidget(self):#创建窗口中的对象例如按钮,文本框
#创建组件
self.btn01=Button(self,text='点击送花',command=self.songhua)
self.btn01.pack()
'''self.btn01['text']='点击送花'
self.btn01.pack()
self.btn01['command']=self.songhua'''
#显示图像
global photo
photo =PhotoImage(file="C:/Users/张倩/Downloads/fa4a9af2951ac47b00f8c2f5966a1d5a.gif")
self.btn03=Button(self,image=photo,command=self.work)
self.btn03.pack()
#创建一个退出按钮 #####例如root.quit()
self.btnQuit=Button(self,text='退出',command=root.destroy)#退出整个主窗口,是类Tk()里的方法,所以用实例化对象root调用
self.btnQuit.pack()
def work(self):
messagebox.showinfo('图片','工作中')
def songhua(self):#方法songhua是类application里的方法,所以不能用root.songhua
messagebox.showinfo('送花','送你99朵玫瑰花')
root=Tk()#主窗口
root.geometry('400x100+200+300')
root.title('一个经典的GUI程序类的测试')
app=Application(master=root)#实例化对象
root.mainloop()
2.一般写法
import tkinter
top=tkinter.Tk()
top.title('zheng ')
a=tkinter.Button(text='command',width=10,height=6,background='red')
a.pack(side='left',padx=150,pady=300)
b=tkinter.Button(text='command',width=10,height=6,background='red')
b.pack(side='right',padx=150)
lab=tkinter.Label(text='姓名标签',background='yellow',font=('隶书',100))
lab.pack(padx=0,pady=10)
ent1=tkinter.Text(font=('微软雅黑',4))
ent1.pack()
top.mainloop()
一定要用代码运行看哟,然后动手打一遍,当然越多越好,不过,只要你把我写的内容理解了,一遍也就理解意思了.加油啊,我们一起成长.