精华内容
下载资源
问答
  • Tkinter控件属性说明文档(全英文),虽然是英文版,但每个控件的属性参数都讲得很详细,这是视频教程里讲不到的。以下举个例子(从文档里复制的): Table 29. Radiobutton widget options ...... | padx | How ...
  • 主要介绍了python tkinter控件布局项目实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法,结合实例形式详细分析了Python GUI编程中tkinter控件的原理、用法及相关操作注意事项,需要的朋友可以参考下
  • 不管是对于Java还是对于Python,我们最开始学习的时候,都会碰到关于开发上的窗口设置,如果...import tkinter as tk root = tk.Tk() 而不同的Frame相当于不同的桌布: face1 = tk.Frame(root) face2 = tk.Frame(root)

    不管是对于Java还是对于Python,我们最开始学习的时候,都会碰到关于开发上的窗口设置,如果不设置这个内容,你所呈现的项目效果,是非常不美观的,而往往为了符合美化,大家都会花费很多心思在基础的窗口设置上,这在每一个语言程序里都是有体现的,我们今日来看下在python上是什么效果吧~

    主程序相当于桌子:

    import tkinter as tk
    root = tk.Tk()
    

    而不同的Frame相当于不同的桌布:

    face1 = tk.Frame(root)
    face2 = tk.Frame(root)
    

    每个界面采用类的方式定义各自的控件和函数,每个界面都建立在一个各自定义的Frame上,那么在实现跳转界面的效果时,

    只需要调用tkinter.destroy()方法销毁旧界面,同时生成新界面的对象,即可实现切换。

    具体代码:

    """
    Created on Tue Oct 16 11:15:01 2018
    Description:tkinter界面切换
    Version:
     
    @author: HJY
    """
    import tkinter as tk
     
     
    class basedesk():
     def __init__(self,master):
     self.root = master
     self.root.config()
     self.root.title('Base page')
     self.root.geometry('200x200')
     
     initface(self.root)
     
    class initface():
     def __init__(self,master):
     
     self.master = master
     self.master.config(bg='green')
     #基准界面initface
     self.initface = tk.Frame(self.master,)
     self.initface.pack()
     btn = tk.Button(self.initface,text='change',command=self.change)
     btn.pack()
     
     def change(self,):
     self.initface.destroy()
     face1(self.master)
     
    class face1():
     def __init__(self,master):
     self.master = master
     self.master.config(bg='blue')
     self.face1 = tk.Frame(self.master,)
     self.face1.pack()
     btn_back = tk.Button(self.face1,text='face1 back',command=self.back)
     btn_back.pack()
     
     def back(self):
     self.face1.destroy()
     initface(self.master)
     
     
    if __name__ == '__main__':
     root = tk.Tk()
     basedesk(root)
     root.mainloop()
    

    我们如果在继续使用 tkinter控件时候,,可以把以上方式方法给套用住,因为这些内容是我们非常好实用的,大家可以作为累积使用。

    展开全文
  • 上代码 from tkinter import* def showGrilFriend(): lbl.config(text="我的名字叫女朋友") root=Tk() root.title("Print GrilFriend") root.geometry("300x200") # 按钮 btn=Button(root,text="打印",command=...

    1. 事件绑定 bind(event,handler)

    除了前面提到的Button中绑定command的事件之外,还有一种使用bind进行绑定事件的方式

    介绍几个常用的鼠标事件:

    < Button-1> 单击鼠标左键
    < Button-3> 单击鼠标右键
    < Button-4> 鼠标滚轮向上滚动
    < Button-5> 鼠标滚轮上下滚动
    < Motion> 鼠标移动-
    < ButtonRelease-1> 松开鼠标左键
    < DoubleButton-1> 双击鼠标左键

    2. 上代码

    from tkinter import*
    
    
    def showGrilFriend():
        lbl.config(text="我的名字叫女朋友")
    
    
    root=Tk()
    root.title("Print GrilFriend")
    root.geometry("300x200")
    
    # 按钮
    btn=Button(root,text="打印",command=showGrilFriend)
    btn.pack(anchor=S)
    
    # 创建一个显示用的Label
    lbl=Label(root,bg="yellow",fg="blue",height=2,width=15,font="Times 16 bold")
    lbl.pack()
    
    root.mainloop()
    

    下面使用bind方法为Button绑定事件
    唯一的区别就是不在需要绑定command,并且回调中需要传事件对象作为参数

    from tkinter import*
    
    # 回调的时候,传入event事件对象
    def showGrilFriend(event):
        lbl.config(text="我的名字叫女朋友")
    
    
    root=Tk()
    root.title("Print GrilFriend")
    root.geometry("300x200")
    
    # 按钮
    btn=Button(root,text="打印")
    btn.pack(anchor=S)
    # 将按钮的单击事件绑定到showGrilFriend回调函数上
    btn.bind("<Button-1>",showGrilFriend) 
    
    # 创建一个显示用的Label
    lbl=Label(root,bg="yellow",fg="blue",height=2,width=15,font="Times 16 bold")
    lbl.pack()
    
    root.mainloop()
    

    运行:
    在这里插入图片描述

    上代码:实时打印鼠标的位置

    from tkinter import*
    
    # 打印鼠标位置
    def printMouseLocation(event):
        x=event.x
        y=event.y
        printInfo="鼠标位置  x:{},y:{}".format(x,y)
        var.set(printInfo)
        
    root=Tk()
    root.title("Print mouse location")
    root.geometry("500x300")
    
    x,y=0,0
    var=StringVar()
    text="鼠标位置  x:{},y:{}".format(x,y)
    var.set(text) # 显示的初始位置为0,0
    
    lbl=Label(root,textvariable=var)
    lbl.pack(anchor=S,side=RIGHT,padx=10,pady=10)
    
    # 为鼠标的移动事件绑定printMouseLocation方法
    root.bind("<Motion>",printMouseLocation)
    root.mainloop()
    

    运行:
    在这里插入图片描述

    3. 取消事件绑定 unbind(event)

    from tkinter import*
    
    def callback(event):
        print("鼠标点击位置:",event.x,event.y)
    
    # 取消事件订阅
    def cancelEvent():
        frame.unbind("<Button-1>") # 取消绑定
        print("鼠标位置打印功能已经被取消")
        
    root=Tk()
    root.title("Mouse location")
    
    btn=Button(root,text="取消事件",fg="black",command=cancelEvent)
    btn.pack(side=TOP,padx=5,pady=5)
    
    frame=Frame(root,width=500,height=280,bg="yellow")
    frame.bind("<Button-1>",callback)
    frame.pack()
    
    root.mainloop()
    

    运行:
    在这里插入图片描述

    4. 多事件绑定

    from tkinter import*
     
    # 单击事件回调
    def clickCallback(event):
        print("this is click event")
    # 单击并松开事件回调
    def releaseCallback(event):
        print("this is release event")
        
    root=Tk()
    root.title("Multi event")
    root.geometry("300x100")
    
    btn=Button(root,text="Trigger")
    btn.pack(anchor=W,padx=10,pady=10)
    btn.bind("<Button-1>",clickCallback,add="+") # 绑定单击事件
    btn.bind("<ButtonRelease-1>",releaseCallback,add="+") # 绑定松手事件
    
    root.mainloop()
    

    运行
    在这里插入图片描述
    当然,除了以上介绍的鼠标事件,键盘也是有事件的,大同小异,这里就不做介绍了
    拜了个拜,如有疑问欢迎随时交流。。。。

    展开全文
  • python : Tkinter控件

    2020-02-29 22:52:30
    Tkinter是Python的标准GUI库。Python使用Tkinter可以快速的创建GUI应用程序 由于Tkinter是内置到python的安装包中,安装Python后就能import Tkinter 库 而且IDLE也是用Tkinter编写而成、对于简单的图形界面Tkinter...

    Tkinter是Python的标准GUI库。Python使用Tkinter可以快速的创建GUI应用程序。
    Tkinter是内置到python的安装包中,安装Python就能用Tkinter 库。

    if sys.version < '3':
        import tkinter as tk #Python3.x
    else:  
        import Tkinter as tk #Python2.x
    

    tkinter支持的核心窗口组件类

    Button 按钮,用来执行一个命令或别的操作
    Label 标签,显示不可编译的文本或图像
    Message 消息框,类似于标签,但可以显示多行文本
    Entry 单行文本框
    Text 多行文本框
    Spinbox 输入控件,类似Entry,可以指定输入范围值
    Checkbutton 复选框
    Radiobutton 单选框
    
    Canvas 画布,用来绘图。可以将图形,文本,小部件或框架放置在画布上
    Frame / LabelFrame 框架,就是容器,用来存放其他控件
    Listbox 列表框,显示供选方案的一个列表
    Comboxlist
    Menu 菜单,用来实现下来和弹出式菜单
    Menubutton 菜单按钮
    
    messageBox 消息框
    OptionMenu 选择菜单
    Scrollbar 滚动条
    Scale 进度条
    LabelScale
    
    Grid 网络布局
    Place 绝对布局
    Pack 相对布局
    
    command 简单的绑定事件
    bind 绑定事件
    

    Listbox Scrollbar

    from tkinter import *
    root = Tk()
    
    log_list = Listbox(root)
    log_list.place(x=0, y=0, relwidth=1, relheight=1)
    for item in range(20):
        log_list.insert(END, str(item)+ 'qawsedrftgyhujikolpqazwsxedcrfv')
        
    #创建Scrollbar
    yscrollbar = Scrollbar(log_list, command=log_list.yview)
    yscrollbar.pack(side='right', fill=Y)
    log_list.config(yscrollcommand=yscrollbar.set)
    xscrollbar = Scrollbar(log_list, orient=HORIZONTAL, command=log_list.xview)
    xscrollbar.pack(side='bottom', fill=X)
    log_list.configure(xscrollcommand=xscrollbar.set)
    
    root.mainloop()
    

    Spinbox

    from tkinter import *
    from tkinter import ttk
    class App:
        def __init__(self, master):
            self.master = master
            self.initWidgets()
        def initWidgets(self):
            ttk.Label(self.master, text='绑定变量').pack()
            self.intVar = IntVar()
            #通过指定values选项创建Spinbox,并为之绑定变量
            self.sb = Spinbox(self.master,
                values=list(range(20, 100, 4)),
                textvariable = self.intVar, #绑定变量
                command = self.press)
            self.sb.pack(fill=X, expand=YES)
            self.intVar.set(20) #通过变量改变Spinbox的值
        def press(self):
            print(self.sb.get())
    root = Tk()
    root.title("Spinbox测试")
    #root.iconbitmap('images/fklogo.ico')#改变窗口图标
    App(root)
    root.mainloop()
    

    在这里插入图片描述

    Radiobutton

    from tkinter import *
    class App:
        def __init__(self, master):
            self.master = master
            self.initWidgets()
        def initWidgets(self):
            #创建一个Label组件
            Label(self.master, text='选择您喜欢的教程:').pack(fill=BOTH, expand=YES)
            self.intVar = IntVar()
            books = ('C语言入门', 'Python入门', 'C++入门', 'Java入门')
            i = 1
            #采用循环创建多个Radiobutton
            for book in books:
                Radiobutton(self.master,
                    text = book,
                    variable = self.intVar, #将Radiobutton绑定到self.intVar变量
                    command = self.change, #将选中事件绑定到self.change方法
                    value=i).pack(anchor=W)
                i += 1
            #设置Radiobutton绑定的变量的值为2,则选中value为2的Radiobutton
            self.intVar.set(2)
        def change(self):
            from tkinter import messagebox
            #通过Radiobutton绑定变量获取选中的单选框
            messagebox.showinfo(title=None, message=self.intVar.get() )
    root = Tk()
    root.title("Radiobutton测试")
    App(root)
    root.mainloop()
    

    Checkbutton

    from tkinter import *
    from tkinter import ttk
    from tkinter import messagebox
    class App:
        def __init__(self, master):
            self.master = master
            self.initWidgets()
        def initWidgets(self):
            Label(self.master, text='选择您喜欢的人物:').pack(fill=BOTH, expand=YES)
            self.chars = []
            characters = ('孙悟空', '猪八戒','唐僧', '牛魔王')
            for ch in characters:
                intVar = IntVar()
                self.chars.append(intVar)
                cb = ttk.Checkbutton(self.master,
                    text = ch,
                    variable = intVar, #将Checkbutton绑定到intVar变量
                    command = self.change) #将选中事件绑定到self.change方法
                cb.pack(anchor=W)
        def change(self):
            new_li = [str(e.get()) for e in self.chars]
            st = ', '.join(new_li)
            messagebox.showinfo(title=None, message=st)
    root = Tk()
    root.title("Checkbutton测试")
    #root.iconbitmap('favicon.ico')#改变窗口图标
    App(root)
    root.mainloop()
    

    在这里插入图片描述

    Canvas Combobox

    from tkinter import *
    from tkinter import ttk
    def go(*args):#处理事件,*args表示可变参数
        return#print(comboxlist.get())#打印选中的值
    def buttonClicked():
        print ("OK button Clicked")
        
    win=Tk()
    canvas=Canvas(win,width=800,height=600)
    image_mainbk_file=PhotoImage(file='main_bg.png')
    canvas.create_image(0,0,anchor='nw',image=image_mainbk_file)
    canvas.pack(side='top')
    
    buttonOK = Button(win,text='OK', font=('Arial',18), bg='deepskyblue', command=buttonClicked)
    buttonOK.place(relx=0.2, rely=0.6,relwidth=0.6, relheight=0.12)
    
    comvalue=StringVar()#窗体自带的文本,新建一个值
    comboxlist=ttk.Combobox(win,textvariable=comvalue)#初始化
    comboxlist["values"]=("1","2","3","4")
    comboxlist.current(0)#选择第一个
    comboxlist.bind("<<ComboboxSelected>>",go)#绑定事件,下拉列表框被选中时绑定go函数
    comboxlist.place(relx=0.2, rely=0.12, relwidth=0.1, relheight=0.05)
    

    在这里插入图片描述

    Scale

    from tkinter import *
    from tkinter import ttk
    class App:
        def __init__(self, master):
            self.master = master
            self.initWidgets()
        def initWidgets(self):
            self.scale = Scale(self.master,
                from_=-100,#设置最大值
                to=100,#设置最小值
                resolution=5,#设置步长
                label='示范Sacle',#设置标签内容
                length=400,#设置轨道的长度
                width=30,#设置轨道的宽度
                troughcolor='lightblue',#设置轨道的背景色
                sliderlength=20,#设置滑块的长度
                sliderrelief=SUNKEN,#设置滑块的立体样式
                showvalue=YES,#设置显示当前值
                orient=HORIZONTAL)#设置水平方向
            self.scale.pack()
            f = Frame(self.master)#创建一个Frame作为容器
            f.pack(fill=X, expand=YES, padx=10)
            Label(f, text='是否显示值:').pack(side=LEFT)
            i = 0
            self.showVar = IntVar()
            self.showVar.set(1)
            #创建两个Radiobutton控制Scale是否显示值
            for s in ('不显示', '显示'):
                Radiobutton(f, text=s, value=i,variable=self.showVar,
                command=self.switch_show).pack(side=LEFT)
                i += 1
            f = Frame(self.master)#创建一个Frame作为容器
            f.pack(fill=X, expand=YES, padx=10)
            Label(f, text='方向:').pack(side=LEFT)
            i = 0
            self.orientVar = IntVar()
            self.orientVar.set(0)
            #创建两个Radiobutton控制Scale的方向
            for s in ('水平', '垂直'):
                Radiobutton(f, text=s, value=i,variable=self.orientVar,
                command=self.switch_orient).pack(side=LEFT)
                i += 1
        def switch_show(self):
            self.scale['showvalue'] = self.showVar.get()
        def switch_orient(self):
            self.scale['orient'] = VERTICAL if self.orientVar.get() else HORIZONTAL
    root = Tk()
    root.title("Scale测试")
    App(root)
    root.mainloop()
    

    LabeledScale

    from tkinter import *
    from tkinter import ttk
    class App:
        def __init__(self, master):
            self.master = master
            self.initWidgets()
        def initWidgets(self):
            self.scale = ttk.LabeledScale(self.master,
                from_ = 0,  # 设置最大值
                to = 100)# 设置最小值
                #compound = BOTTOM # 设置显示数值的Label在下方
            self.scale.value = 0
            self.scale.pack(fill=X, expand=YES)
    root = Tk()
    root.title("LabeledScale测试")
    App(root)
    root.mainloop()
    

    在这里插入图片描述

    #!/usr/bin/env python
    #coding:utf-8
    
    from Tkinter import *
    class MainWindow:
        def __init__(self):
            self.frame = Tk()#tkinter的主窗口
    
            self.label_name = Label(self.frame,text = "name:")
            self.label_age = Label(self.frame,text = "age:")
            self.label_sex = Label(self.frame,text = "sex:")
    
            self.text_name = Text(self.frame,height = "1",width = 30)
            self.text_age = Text(self.frame,height = "1",width = 30)
            self.text_sex = Text(self.frame,height = "1",width = 30)
    
            self.label_name.grid(row = 0,column = 0)
            self.label_age.grid(row = 1,column = 0)
            self.label_sex.grid(row = 2,column = 0)
    
            self.button_ok = Button(self.frame,text = "ok",width = 10)
            self.button_cancel = Button(self.frame,text = "cancel",width = 10)
    
            self.text_name.grid(row = 0,column = 1)
            self.text_age.grid(row = 1,column = 1)
            self.text_sex.grid(row = 2,column = 1)
    
            self.button_ok.grid(row = 3,column = 0)
            self.button_cancel.grid(row = 3,column = 1)
    
            self.frame.mainloop()#进入消息循环
    
    frame = MainWindow()
    

    程序的主要功能:
    1、启动以后自动计时
    2、计时完成后弹出窗口进行提示 (默认时间为30分钟)
    3、点击确定后重新进行计时
    问题:1、界面简单不精致 2、休眠时不能够自动停止计时

    # -*- coding: utf-8 -*-  
    import time, sys
    
    if sys.version < '3':
        from Tkinter import *
    else:  
        from tkinter import *
    
    mydelaymin = 30 #窗口提示的延迟时间,以分钟计
    
    #------------------def-------------------
    def showMessage():
        #show reminder message window
        root = Tk()  #建立根窗口
        #root.minsize(500, 200)   #定义窗口的大小  
        #root.maxsize(1000, 400)  #不过定义窗口这个功能我没有使用
        root.withdraw()  #hide window
        #获取屏幕的宽度和高度,并且在高度上考虑到底部的任务栏,为了是弹出的窗口在屏幕中间
        screenwidth = root.winfo_screenwidth()
        screenheight = root.winfo_screenheight() - 100
        root.resizable(False,False)
        #添加组件
        root.title("Warning!!")
        frame = Frame(root, relief=RIDGE, borderwidth=3) 
        frame.pack(fill=BOTH, expand=1) #pack() 放置组件若没有则组件不会显示
        #窗口显示的文字、并设置字体、字号
        label = Label(frame, text="You have been working 30 minutes! Please have a break!!", \
        font="Monotype\ Corsiva -20 bold")
        label.pack(fill=BOTH, expand=1)
        #按钮的设置
        button = Button(frame, text="OK", font="Cooper -25 bold", fg="red", command=root.destroy)
        button.pack(side=BOTTOM)
      
        root.update_idletasks()
        root.deiconify() #now the window size was calculated 还原最小化(不用不会出现窗口) 
        root.withdraw() #hide the window again 防止窗口出现被拖动的感觉 具体原理未知?
        root.geometry("{0}x{1}+{2}+{3}".format(int(root.winfo_width() + 10), int(root.winfo_height() + 10),   
            int((screenwidth - root.winfo_width())/2), int((screenheight - root.winfo_height())/2)))
        #geometry:设置窗口的宽高。%sx%s代表了初始化时主窗口的大小,%s,%s代表了初始化时窗口所在的位置
        root.deiconify()
        root.mainloop()
      
    while True:
        time.sleep(mydelaymin*60) #参数为秒
        showMessage()
    
    展开全文
  • tkinter控件属性大全

    千次阅读 2018-09-17 08:50:02
     Tkinter模块提供了相应于Tk中的各种窗口部件类型的类和一定数量的mixin和别的帮助类(mixin是一个类,被设计来使用多态继承与其它的类结合)。当你使用Tkinter时,你不将直接访问mixin类。    一、实施mixins ...

        1.Button 按钮。类似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操作/事件
        2.Canvas 画布。提供绘图功能(直线、椭圆、多边形、矩形) ;可以包含图形或位图
        3.Checkbutton 选择按钮。一组方框,可以选择其中的任意个(类似 HTML 中的 checkbox)
        4.Entry 文本框。单行文字域,用来收集键盘输入(类似 HTML 中的 text)
        5.Frame 框架。包含其他组件的纯容器
        6.Label 标签。用来显示文字或图片
        7.Listbox 列表框。一个选项列表,用户可以从中选择
        8.Menu 菜单。点下菜单按钮后弹出的一个选项列表,用户可以从中选择
        9.Menubutton 菜单按钮。用来包含菜单的组件(有下拉式、层叠式等等)
        10.Message 消息框。类似于标签,但可以显示多行文本
        11.Radiobutton 单选按钮。一组按钮,其中只有一个可被“按下” (类似 HTML 中的 radio)
        12.Scale 进度条。线性“滑块”组件,可设定起始值和结束值,会显示当前位置的精确值
        13.Scrollbar 滚动条。对其支持的组件(文本域、画布、列表框、文本框)提供滚动功能
        14.Text 文本域。 多行文字区域,可用来收集(或显示)用户输入的文字(类似 HTML 中的 textarea)
        15.Toplevel 顶级。类似框架,但提供一个独立的窗口容器。
        
        Tkinter支持15个核心的窗口部件,这个15个核心窗口部件类列表如下:
        
        窗口部件及说明:
        
        Button:
        一个简单的按钮,用来执行一个命令或别的操作。
        
        Canvas:
        组织图形。这个部件可以用来绘制图表和图,创建图形编辑器,实现定制窗口部件。
        
        Checkbutton:
        代表一个变量,它有两个不同的值。点击这个按钮将会在这两个值间切换。
        
        Entry:
        文本输入域。
        
        Frame:
        一个容器窗口部件。帧可以有边框和背景,当创建一个应用程序或dialog(对话)版面时,帧被用来组织其它的窗口部件。
        
        Label:
        显示一个文本或图象。
        
        Listbox:
        显示供选方案的一个列表。listbox能够被配置来得到radiobutton或checklist的行为。
        
        Menu:
        菜单条。用来实现下拉和弹出式菜单。
        
        Menubutton:
        菜单按钮。用来实现下拉式菜单。
        
        Message:
        显示一文本。类似label窗口部件,但是能够自动地调整文本到给定的宽度或比率。
        
        Radiobutton:
        代表一个变量,它可以有多个值中的一个。点击它将为这个变量设置值,并且清除与这同一变量相关的其它radiobutton。
        
        Scale:
        允许你通过滑块来设置一数字值。
        
        Scrollbar:
        为配合使用canvas, entry, listbox, and text窗口部件的标准滚动条。
        
        Text:
        格式化文本显示。允许你用不同的样式和属性来显示和编辑文本。同时支持内嵌图象和窗口。
        
        Toplevel:
        一个容器窗口部件,作为一个单独的、最上面的窗口显示。
        
        注意在Tkinter中窗口部件类没有分级;所有的窗口部件类在树中都是兄弟。
        
        所有这些窗口部件提供了Misc和几何管理方法、配置管理方法和部件自己定义的另外的方法。此外,Toplevel类也提供窗口管理接口。这意味一个典型的窗口部件类提供了大约150种方法。
        
        Button窗口部件
        
        Button(按钮)窗口部件是一个标准的Tkinter窗口部件,用来实现各种按钮。按钮能够包含文本或图象,并且你能够将按钮与一个Python函数或方法相关联。当这个按钮被按下时,Tkinter自动调用相关联的函数或方法。
        
        按钮仅能显示一种字体,但是这个文本可以跨行。另外,这个文本中的一个字母可以有下划线,例如标明一个快捷键。默认情况,Tab键用于将焦点移动到一个按钮部件。
        
        一、那么什么时候用按钮部件呢?
        
        简而言之,按钮部件用来让用户说“马上给我执行这个任务”,通常我们用显示在按钮上的文本或图象来提示。按钮通常用在工具条中或应用程序窗口中,并且用来接收或忽略输入在对话框中的数据。
        
        关于按钮和输入的数据的配合,可以参看Checkbutton和Radiobutton部件。
        
        二、样式
        
        普通的按钮很容易被创建,仅仅指定按钮的内容(文本、位图、图象)和一个当按钮被按下时的回调函数即可:
        b = Button(master, text="OK", command=self.ok)
        
        没有回调函数的按钮是没有用的,当你按下这个按钮时它什么也不做。你可能在开发一个应用程序的时候想实现这种按钮,比如为了不干扰你的beta版的测试者:
        b = Button(master, text="Help", state=DISABLED)
        
        如 果你没有指定尺寸,按钮的大小将正好能够容纳它的内容。你可以用padx和pady选项来增加内容与按钮边框的间距。你也可以用height和width 选项来显式地设置按钮的尺寸。如果你在按钮中显示文本,那么这些选项将以文本的单位为定义按钮的尺寸。如果你替而代之显示图象,那么按钮的尺寸将是象素 (或其它的屏幕单位)。你实际上甚至能够用象素单位来定义文本按钮的尺寸,但这可能带来意外的结果。下面是指定尺寸的一段例子代码:
        f = Frame(master, height=32, width=32)
        f.pack_propagate(0) # don't shrink
        b = Button(f, text="Sure!")
        b.pack(fill=BOTH, expand=1)
        
        按钮能够显示多行文本(但只能用一种字体)。 你可以使用多行或wraplength选项来使按钮自己调整文本。当调整文本时,使用anchor,justify,也可加上padx选项来得到你所希望的格式。一个例子如下:
        b = Button(master, text=longtext, anchor=W, justify=LEFT, padx=2)
        
        为了使一个普通的按钮看起来像凹入的,例如你想去实现某种类型的工具框,你可简单地将relief的值从"RAISED"改变为"SUNKEN:
        b.config(relief=SUNKEN)
        
        你也可能想改变背景。注意:一个大概更好的解决方案是使用一个Checkbutton或Radiobutton其indicatoron选项的值设置为false:
        b = Checkbutton(master, image=bold, variable=var, indicatoron=0)
        
        三、方法
        
        Button窗口部件支持标准的Tkinter窗口部件接口,加上下面的方法:
        
        flash():频繁重画按钮,使其在活动和普通样式下切换。
        
        invoke() :调用与按钮相关联的命令。
        
        下面的方法与你实现自己的按钮绑定有关:
        
        tkButtonDown(), tkButtonEnter(), tkButtonInvoke(), tkButtonLeave(), tkButtonUp() 
        这些方法可以用在定制事件绑定中,所有这些方法接收0个或多个形参。
        
        四、选项
        
        Button窗口部件支持下面的选项:
        
        activebackground, activeforeground
        类型:颜色;
        说明:当按钮被激活时所使用的颜色。
        
        anchor
        类型:常量;
        说明:控制按钮上内容的位置。使用N, NE, E, SE, S, SW, W, NW, or CENTER这些值之一。默认值是CENTER。
        
        background (bg), foreground (fg)
        类型:颜色;
        说明:按钮的颜色。默认值与特定平台相关。
        
        bitmap
        类型:位图;
        说 明:显示在窗口部件中的位图。如果image选项被指定了,则这个选项被忽略。下面的位图在所有平台上都有 效:error, gray75, gray50, gray25, gray12, hourglass, info, questhead, question, 和 warning.
        
        这 后面附加的位图仅在Macintosh上有 效:document, stationery, edition, application, accessory, folder, pfolder, trash, floppy, ramdisk, cdrom, preferences, querydoc, stop, note, 和 caution.
        
        你也可以从一个XBM文件中装载位图。只需要在XBM文件名前加一个前缀@,例如"@sample.xbm"。
        
        borderwidth (bd)
        类型:整数;
        说明:按钮边框的宽度。默认值与特定平台相关。但通常是1或2象素。
        
        command
        类型:回调;
        说明:当按钮被按下时所调用的一个函数或方法。所回调的可以是一个函数、方法或别的可调用的Python对象。
        
        cursor
        类型:光标;
        说明:当鼠标移动到按钮上时所显示的光标。
        
        default
        类型:常量;
        说明:如果设置了,则按钮为默认按钮。注意这个语法在Tk 8.0b2中已改变。
        
        disabledforeground
        类型:颜色;
        说明:当按钮无效时的颜色。
        
        font
        类型:字体;
        说明:按钮所使用的字体。按钮只能包含一种字体的文本。
        
        highlightbackground, highlightcolor
        类型:颜色;
        说明:控制焦点所在的高亮边框的颜色。当窗口部件获得焦点的时候,边框为highlightcolor所指定的颜色。否则边框为highlightbackground所指定的颜色。默认值由系统所定。
        
        highlightthickness
        类型:距离;
        说明:控制焦点所在的高亮边框的宽度。默认值通常是1或2象素。
        
        image
        类型:图象;
        说明:在部件中显示的图象。如果指定,则text和bitmap选项将被忽略。
        
        justify
        类型:常量;
        说明:定义多行文本如何对齐。可取值有:LEFT, RIGHT, 或 CENTER。
        
        padx, pady
        类型:距离;
        说明:指定文本或图象与按钮边框的间距。
        
        relief
        类型:常量;
        说明:边框的装饰。通常按钮按下时是凹陷的,否则凸起。另外的可能取值有GROOVE, RIDGE, 和 FLAT。
        
        state
        类型:常量;
        说明:按钮的状态:NORMAL, ACTIVE 或 DISABLED。默认值为NORMAL。
        
        takefocus
        类型:标志;
        说明:表明用户可以Tab键来将焦点移到这个按钮上。默认值是一个空字符串,意思是如果按钮有按键绑定的话,它可以通过所绑定的按键来获得焦点。
        
        text
        类型:字符串;
        说明:显示在按钮中的文本。文本可以是多行。如果bitmaps或image选项被使用,则text选项被忽略。
        
        textvariable
        类型:变量;
        说明:与按钮相关的Tk变量(通常是一个字符串变量)。如果这个变量的值改变,那么按钮上的文本相应更新。
        
        underline
        类型:整数;
        说明:在文本标签中哪个字符加下划线。默认值为-1,意思是没有字符加下划线。
        
        width, height
        类型:距离;
        说明:按钮的尺寸。如果按钮显示文本,尺寸使用文本的单位。如果按钮显示图象,尺寸以象素为单位(或屏幕的单位)。如果尺寸没指定,它将根据按钮的内容来计算。
        
        wraplength
        类型:距离;
        说明:确定一个按钮的文本何时调整为多行。它以屏幕的单位为单位。默认不调整。
        
        Mixins
        
        Tkinter模块提供了相应于Tk中的各种窗口部件类型的类和一定数量的mixin和别的帮助类(mixin是一个类,被设计来使用多态继承与其它的类结合)。当你使用Tkinter时,你不将直接访问mixin类。
        
        一、实施mixins
        
        通过root窗口和窗口部件类,Misc类被用作mixin。它提供了大量的Tk和窗口相关服务,这些服务对所有Tkinter核心窗口部件者有效。这些通过委托完成;窗口部件仅仅直接请求适当的内部对象。
        
        Wm类通过root窗口和顶级窗口部件类被用作mixin。通过委托它提供了窗口管理服务。
        
        使用委托像这样简化你的应用程序代码:一旦你有一窗口部件,你能够使用这个窗口部件的实例的方法访问Tkinter的所有部份。
        
        二、Geometry(几何学)与mixins
        
        Grid,Pack,Place这些类通过窗口部件类被用作mixins。通过委托,它们也提供了访问不同几何管理的支持。
        下面是Geometry Mixins的列表及说明:
        管理器及说明:
        
        Grid:grid几何管理器允许你通过在一个二维网格中组织窗口部件来创建一个类似表的版面。
        Pack:pack几何管理器通过在一个帧中把窗口部件包装到一个父部件中来创建一个版面。为了对窗口部件使用这个几何管理器,我们在这个窗口部件上使用pack方法来集成。
        Place:place几何管理器让你显式将一个窗口部件放到给定的位置。要使用这个几何管理器,需使用place方法。
        
        三、窗口部件配置管理
        Widget类使用 geometry mixins来混合Misc类,并通过cget和configure方法来增加配置管理,也可以通过一个局部的字典接口。 
        
        窗口部件的配置
        
        要配置一个窗口部件的外观,你用选项比使用方法调用好。典型的选项包括text、color、size、command等等。对于处理选项,所有的核心窗口部件执行同样的配置接口:
        
        配置接口
        
        widgetclass(master, option=value, ...) => widget 
        说明:
        创 建这个窗口部件的一个实例,这个实例作为给定的master的孩子,并且使用给定的选项。所有的选项都有默认值,因此在简单的情况下,你仅需要指定这个 master。如果你想的话,你也可以不指定master;Tkinter这时会使用最近创建的root窗口作为master。注意这个name选项仅能 在窗口部件被创建时设置。
        
        cget(option) => string 
        说明:
        返回一个选项的当前值。选项的名字和返回值都是字符串。要得到name选项,使用str(widget)代替。
        
        configure(option=value, ...), config(option=value, ...) 
        说明:
        设置一个或多个选项(作为关键字参数给定)。
        注意一些选项的名字与Python中的保留字相同(class,from等)。要使用这些作为关键字参数,仅需要在这些选项名后添加一下划线(class_,from_)。注意你不能用此方法来设置name选项;name选项只能在窗口部件被创建时设置。
        
        为了方便起见,窗口部件也实现一个局部的字典接口。 __setitem__ 方法映射configure,而__getitem__方法映射cget。你可以使用下面的语法来设置和查询选项:
        value = widget[option]
        widget[option] = value
        注意每个赋值都导致一个对Tk的调用。如果你希望去改变多个选项,单独地调用(config或configure)去改变它们是一个好的主意。
        
        这下面的字典方法也适用于窗口部件:
        keys() => list 
        说明:
        返回窗口部件中所有可以被设置的选项的一个列表。name选项不包括在这个列表中(它不能通过字典接口被查询或修改)。
        
        向后兼容性
        
        关键字参数在Python1.3时被引入。之前,使用原始的Python字典将选项传递给窗口构造器和configure方法。原代码类似如下:
        self.button = Button(frame, {"text": "QUIT", "fg": "red", "command": frame.quit})
        self.button.pack({"side": LEFT})
        
        关键字参数语法更优雅和少容易发生错误。但是为了与存在的代码兼容,Tkinter仍支持老的语法。在新的程序中你不应再用老的语法,即使是在某些情况下是很有吸引力的。例如,如果你创建了一个定制的窗口部件,它需要沿它的父类传递配置选项,你的代码可能如下:
        def __init__(self, master, **kw):
            Canvas.__init__(self, master, kw) # kw 是一个字典
        上面的代码在当前版本的Tkinter下工作的很好,但是它在将来的版本下可能不工作。一个通常的办法是使用apply函数:
        def __init__(self, master, **kw):
            apply(Canvas.__init__, (self, master), kw)
        这个apply函数使用了一个函数(一个未约束的方法),一个带参数的元组(它必须包括self,因为我们调用一个未约束的方法),一个可选的,提供了关键字参数的字典。
        
        窗口部件的样式之颜色
        
        所有的Tkinter标准窗口部件提供了一套样式设置选项,这让你可以去修改这些窗口部件的外观如颜色、字体和其它的可视外观。
        
        颜色
        
        大部份窗口部件都允许你指定窗口部件和文本的颜色,这可以使用background和foreground选项。要指定颜色,你可以使用颜色名,也可以使用红、绿、蓝颜色组合。
        
        1、颜色名
        Tkinter 包括一个颜色数据库,它将颜色名映射到相应的RGB值。这个数据库包括了通常的名称如Red, Green, Blue, Yellow, 和 LightBlue,也可使用外来的如Moccasin,PeachPuff等等。在X window系统上,颜色名由X server定义。你能够找到 一个名为xrgb.txt的文件,它包含了一个由颜色名和相应RGB值组成的列表。在Windows和Macintosh系统上,颜色名表内建于Tk中。
        
        在Windows下,你可以使用Windows系统颜色(用户可以通过控制面板来改变这些颜色):
        SystemActiveBorder, SystemActiveCaption, SystemAppWorkspace, SystemBackground, 
        SystemButtonFace, SystemButtonHighlight, SystemButtonShadow, SystemButtonText, 
        SystemCaptionText, SystemDisabledText, SystemHighlight, SystemHighlightText, 
        SystemInactiveBorder, SystemInactiveCaption, SystemInactiveCaptionText, SystemMenu, 
        SystemMenuText, SystemScrollbar, SystemWindow, SystemWindowFrame, SystemWindowText。
        
        在Macintosh上,下面的系统颜色是有效的:
        SystemButtonFace, SystemButtonFrame, SystemButtonText, SystemHighlight, SystemHighlightText, SystemMenu, SystemMenuActive, SystemMenuActiveText, SystemMenuDisabled, SystemMenuText, SystemWindowBody。
        
        颜色名是大小写不敏感的。许多颜色名词与词之间有无格都有效。例如"lightblue", "light blue", 和 
        "Light Blue"都是同一颜色。
        
        2、RGB格式
        
        如果你需要显式地指定颜色名,你可以使用如下格式的字符串:
        #RRGGBB
        RR, GG, BB 分别是red,green和blue值的十六进制表示。下面的例子演示了如何将一个颜色三元组转换为
        
        一个Tk颜色格式:
        tk_rgb = "#%02x%02x%02x" % (128, 192, 200)
        
        Tk也支持用形如"#RGB"和"rrrrggggbbbb"去分别指定16和65536程度之间的值。
        
        你可以使用窗口部件的winfo_rgb方法来将一个代表颜色的字符串(名字或RGB格式)转换为一个三元组:
        rgb = widget.winfo_rgb("red")
        red, green, blue = rgb[0]/256, rgb[1]/256, rgb[2]/256
        注意winfo_rgb返回16位的RGB值,范围在0~65535之间。要将它们映射到更通用的0~255范围内,你必须将每个值都除以256(或将它们向右移8位)。 
     

    展开全文
  • 本教程共用12个例子,将python tkinter所常用的控件进行用法展示,所展示的控件分别为 Label控件,Entry控件,Text控件,Button控件,canvas控件,Radiobutton控件,Checkbutton控件,List控件,Scale控件,Menu控件...
  • 分类目录——tkinter 先看效果 .pack()方式放置 .grid()方式放置 .place()方式放置 应用实例 .pack # # .pack()方式放置 tk.Label(window, text='1', bg='red').pack(side='top') #上 # pack支持的属性after, ...
  • Tkinter控件有特定的几何状态管理方法,管理整个控件区域组织,以下是Tkinter公开的几何管理类:包、网格、位置。 几何方法 描述 pack() 包装 grid() 网格 place() 位置 一、pack 包装 pack方法会从上...
  • Tkinter 控件详细介绍

    万次阅读 2015-07-18 12:58:29
    python 界面编程 Tkinter 15种控件简介  2012-02-21 16:23:47| 分类: python代码 | 标签: |字号大中小 订阅 1.Button 按钮。类似标签,但提供额外的功能,例如鼠标掠过、按下、释放以及键盘操作/...
  • Tkinter控件加载图片

    千次阅读 2017-02-03 19:08:24
    img = PhotoImage(file=’./img/1.gif’) print imgButton(root, command = p, image = img).pack() Label(root, image = img).pack()
  • tkinter控件及布局浅析

    2019-11-15 08:59:32
    GUI 的全称是 ...虽然说tkinter不是GUI编程中最好的工具,但是tkinter用起来十分简单,著名的IDLE就是tkinter开发出来的。 一. 安装 tkinter 如果使用的是Anaconda Python的开发环境,不需要再安装tkinter...
  • tkinter 控件的背景颜色 Radiobutton控件

    千次阅读 2019-03-25 16:44:01
    1.在我的电脑中,如果不设置的话,默认的背景色是一种青蓝色,单独再设置背景颜色 tk.Entry(t,text='人数',show=None,...2.Radiobutton控件出现一种情况就是:多个控件在刚开始的时候都选中了 解决方法: t...
  • tkinter控件

    2020-12-20 17:07:50
    1、tkinter窗口 import tkinter as tk window = tk.Tk() window.title('my window') window.geometry(1400x800) window.resizable(width=False, height=False) #窗口不可改变大小 #window.state('zoomed') #Win系统...
  • xxx.bind("<Return>", def)即可绑定enter键,不过这里的def函数必须要加self,而... 因此可以在创建一个函数之后,另外再创建一个调用函数的函数加self即可 样例如下: def test(): ...两个函数的意义是既能e...
  • 下面几个例子关于tkinter界面更新的,简单易懂,分享一下。 例子_1: 代码_1: from tkinter import Tk, Checkbutton, Label from tkinter import StringVar, IntVar root = Tk() text = ...
  • PYTHON tkinter Entry 控件的焦点移动 话不多说。 代码片. # -*- coding: utf8 -*- from tkinter import * ##################################### ###--------------tk---------------- class App: def __init...
  • Tkinter控件(上)

    2021-02-18 16:57:32
    tkinter中的常用控件Tkinter控件的使用都是基于如下的形式的: 控件类型(根对象, [属性列表]) 在控件定义好之后就需要将其添加到主界面上去。通常使用的布局方法便是pack()函数,没有调用pack()函数控件是不能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,142
精华内容 2,456
关键字:

tkinter的控件