精华内容
下载资源
问答
  • 由于 Tkinter 是内置到 python 的安装包、只要安装好 Python 之后就能 import Tkinter 库、而且 IDLE 也是用 Tkinter 编写而成、对于简单的图形界面 Tkinter 还是能应付自如。 pycharm 调试Tkinter程序的时候,...
  • python中Tkinter 窗口之列表选择窗口

    千次阅读 2020-02-03 13:14:46
    创建主窗口 创建一个label用于显示 创建一个方法用于按钮的点击事件 创建一个按钮 创建一个Listbox和变量var2,并将var2的值赋给Listbox 创建主窗口 #首先导入tk import tkinter as tk #定义窗口 window = tk.Tk()...

    ☞☞☞点击查看更多优秀Python博客☜☜☜

    python中Tkinter 窗口之列表选择窗口

    在使用python中选择窗口结果如图所示:
    在这里插入图片描述
    具体步骤:

    1. 创建主窗口
    2. 创建一个label用于显示
    3. 创建一个方法用于按钮的点击事件
    4. 创建一个按钮
    5. 创建一个Listbox和变量var2,并将var2的值赋给Listbox

    创建主窗口

    #首先导入tk
    import tkinter as tk
    
    #定义窗口
    window = tk.Tk()
    window.title('BIN信息管理系统')
    window.geometry('600x400')
    
    

    创建一个label用于显示

    var1 = tk.StringVar()    #创建变量
    l =tk.Label(window,bg='yellow',width=4,textvariable=var1)
    l.pack()
    

    创建一个方法用于按钮的点击事件

    def print_selection():
        value = lb.get(lb.curselection())   #获取当前选中的文本
        var1.set(value)     #为label设置值
    

    创建一个按钮

    b1 = tk.Button(window, text='print selection', width=15,
                  height=2, command=print_selection)
    b1.pack()
    

    创建一个Listbox和变量var2,并将var2的值赋给Listbox

    var2 = tk.StringVar()
    var2.set((11,22,33,44)) #为变量设置值
    
    #创建Listbox
    
    lb = tk.Listbox(window, listvariable=var2)  #将var2的值赋给Listbox
    
    #创建一个list并将值循环添加到Listbox控件中
    list_items = [1,2,3,4]
    for item in list_items:
        lb.insert('end', item)  #从最后一个位置开始加入值
    lb.insert(1, 'first')       #在第一个位置加入'first'字符
    lb.insert(2, 'second')      #在第二个位置加入'second'字符
    lb.delete(2)                #删除第二个位置的字符
    lb.pack()
    
    #显示主窗口
    window.mainloop()
    

    代码合成如下:

    #首先导入tk
    import tkinter as tk
    
    #定义窗口
    window = tk.Tk()
    window.title('BIN信息管理系统')
    window.geometry('600x400')
    
    #创建一块画布用于显示
    var1 = tk.StringVar()    #创建变量
    l =tk.Label(window,bg='green',width=50,height=5,textvariable=var1)
    l.pack()
    
    #创建一个方法用于按钮的点击事件
    def print_selection():
        value = lb.get(lb.curselection())   #获取当前选中的文本,lb.curselection()表示是选中的文本
        var1.set(value)     #为label设置值set即为打印value的值
    b1 = tk.Button(window, text='print selection', bg='yellow',fg='red',font=('Arial', 12),width=15,height=2, 
    command=print_selection)
    b1.pack()
    
    #创建一个Listbox和变量var2,并将var2的值赋给Listbox 
    var2 = tk.StringVar()
    var2.set((11,22,33,44)) #为变量设置值
    
    #创建Listbox
    lb = tk.Listbox(window, listvariable=var2)  #将var2的值赋给Listbox
    
    #创建一个list并将值循环添加到Listbox控件中
    list_items = [1,2,3,4]
    
    for item in list_items:
        lb.insert('end', item)  #从最后一个位置开始加入值
    lb.insert(1, 'first')       #在第一个位置加入'first'字符
    lb.insert(2, 'second')      #在第二个位置加入'second'字符
    lb.delete(2)                #删除第二个位置的字符
    lb.pack()
    
    window.mainloop()
    

    代码格式如图所示:
    在这里插入图片描述

    代码运行结果如图所示:
    在这里插入图片描述

    特此声明:
    学习来源:莫烦python
    此文章仅做个人学习使用,希望对于你的学习有帮助,引用请标明莫烦python

    **文章导航:**

    零基础学Python教程
    在这里插入图片描述

    展开全文
  • 主窗口就是你的程序开始运行的时候创建的,在主窗口中你通常是放置了你主要的部件.另外,Tkinter脚本可以依据需要创建很多独立的窗口,主要的方法就是通过创建Toplevel对象。每一个Toplevel对象都创建一个显示的窗口,...

    Tkinter中的GUI总是有一个root窗口,不管你是主动或者别动获得.主窗口就是你的程序开始运行的时候创建的,在主窗口中你通常是放置了你主要的部件.另外,Tkinter脚本可以依据需要创建很多独立的窗口,主要的方法就是通过创建Toplevel对象。
    每一个Toplevel对象都创建一个显示的窗口,不需要通过mainloop方法调用。

    关于Toplevel和Tk部件:
    一个Toplevel象一个Frame,并且可以通过额外的方法来让你处理Toplevel窗口的属性。
    而Tk更像一个Toplevel,但是它用于描绘程序主窗口的外貌。

    Tkinter GUI都是按照层次来创建的,默认你可以有一个根窗口(root window).

    一,Tkinter介绍 Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口。Tkinter不是唯一的python图形编 程接口,但是是其中比较流行的一个。最大的特点是跨

    一,Tkinter介绍

    Tkinter 是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口。Tkinter不是唯一的python图形编程接口,但是是 其中比较流行的一个。最大的特点是跨平台,缺点是性能不太好,执行速度慢。

    一 般使用Tkinter的方法是:

    From Tkinter import *

    或 者: import Tkinter 两者的区别我们前面讲模块的时候已经说过了。

     

     

    二,Tkinter的使用。

    先 看一下GUI程序的开发,熟悉MFC的朋友应该不会陌生。在GUI程序中,我们会有一个顶层窗口,在这个顶层窗口上可以包括所有的小窗口对象,像标签,按 钮,列表框等等,也就是说顶层窗口时我们放置其他窗口或者控件的地方。我们用下面的语句可以创建一个顶层窗口,或者叫根窗口:

    Import Tkinter

    top = Tkinter.Tk()

    (如 果前面是用的from Tkinter import * ,那么Tk()就够了)

    然 后我们就可以在这个根窗口上设置“组件”了。通常这些组件会有一些相应的行为,比如鼠标点击,按下等等,这些称为事件,而程序会根据这些时间采取相应的反 应,称为回调。这个过程成为事件驱动。

    所 有的创建和放置完毕后,就立刻进入主循环,代码如下:

    Tkinter.mainloop( )

     

     

    Tk 的组件有很多,不可能一一介绍,通过一个小例子看看其中一个标签的使用吧。

    >>> import Tkinter

    >>> top = Tkinter.Tk()

    >>> label = Tkinter.Label(top,text=’Hello World’)

    >>> label.pack()

    >>> Tkinter.mainloop()

    运 行结果就是

     

    下 面解释一下:
       第一行,是导入模块。

    第 二行,创建主窗口。

    第 三行,创建label标签,它是有Tkinter的一个方法Label来实现的,关于Label的帮助可以help一下。

    第 四行,pack()是用来管理和显示组件的,它的参数我们以后再说。

    第 五行,mainloop()进入主循环。剩下的事就系统的了。

     

    下 面看看组件的配置。Tk中的每一个组件都有很多option,通过改变这些option可以改变组件的外观,比如显示的内容,颜色,大小,位置,事件处理 函数等。

    比 如: w=label(root,text=’hello’,fg=’red’)

    创 建一个w,第一个参数时他的master widget,是root,所有参数都有默认的。我们可以用默认的来创建,w.cget(option)得到一个option的值。同样可以用 w.config(option=’’)来设置某个参数的值。

     

    三,Tkinter的几何管理器。

    熟 悉GUI编程的人知道,放好每个组件的是很繁琐的,不仅要调整自身大小,还要

    整 和其他组件的相对位置。Tk提供了三个管理器来帮助我们:Pack  Grid  Place

    1 pack

    Pack 使用很简单,就是w.pack(option)。常用的option有:

    Side 表示把组件放到哪一边,TOP(上),BOTTOM(下),LEFT,RIGHT

    Padx 和pady  表示parcel的每一个边和组件的预留空间。

    Ipadx 和ipady,表示组件的每一个边和他包含的内容之间的预留空间。

    Anchor 表示在parcel放置组件的方式,缺省时CENTER。

    2 grid

    使 用方法和pack类似。

    3 place

    精 确的摆放一个组件的位置,一般不太用。

    关 于这个三个的详细使用和算法可以参考相关资料。

    下 面看最后一个例子:

    #encoding=utf-8
    from Tkinter import *
    
    #resize函数是用来改变文字大小的,当进度条改变时调用
    def resize(ev=None):
    
    #config函数就是通过设置组件的参数来改变组件的,这里改变的是font字体大小
    label.config(font='Helvetica -%d bold' % scale.get())
    
    #主窗口
    top=Tk()
    
    #设置了主窗口的初始 大小600×400
    top.geometry('600×400+30+40')
    
    #设置标签字体的初始大小
    label=Label(top,text='Hello world!',font='Helvetica -16 bold')
    
    #scale创建进度条,设置
    label.pack(fill=Y,expand=1)
    
    scale=Scale(top,from_=10,to=40,orient=HORIZONTAL,command=resize)
    
    #设置起始位置
    scale.set(12)
    
    scale.pack(fill=X,expand=1)
    quit = Button(top,text='QUIT',command=top.quit,activeforeground='white',
    activebackground='red')
    quit.pack()
    mainloop()
    
    所有的 Tkinter 组件都包含专用的几何管理方法,这些方法是用来组织和管理整个父配件区中子配件的布局的。 Tkinter 提供了截然不同的三种几何管理类: pack 、 grid 和 place 。 pack() pac

     

     

    函数名 描述
    slaves() 以列表方式返回本组件的所有子组件对象。
    propagate(boolean) 设置为True表 示父组件的几何大小由子组件决定(默认值),反之则无关。
    info() 返回pack提 供的选项所对应得值。
    forget() Unpack组 件,将组件隐藏并且忽略原有设置,对象依旧存在,可以用pack(option, …),将其显示。
    grid_remove ()  

     

     

    所有的Tkinter组件都包含专用的几何管理方法,这些方法是用 来组织和管理整个父配件区中子配件的布局的。Tkinter提 供了截然不同的三种几何管理类:pack、grid和place。

      

    pack()

           pack几何管理采用块的方式组织配件,在快速生成界面设计中广泛采用,若干组件简单的布局, 采用pack的代码量最少。pack几何管理程序根据组件创建生成的顺序将组件添加到父组 件中去。通过设置相同的锚点(anchor)可以 将一组配件紧挨一个地方放置,如果不指定任何选项,默认在父窗体中自顶向下添加组件。

          使用pack()布局的通用公式为:

          WidgetObject.pack(option, …)

          pack方 法提供了下列option选项,选项可以直接赋值 或以字典变量加以修改:

     

    名称 描述 取值范围
    expand 当值为“yes”时,side选项无效。组件显示在父配件中心位置;若fill选项为”both”,则填充父组件的剩余空间。 “yes”, 自然数, “no”, 0

     

     (默认值为“no”或0)

    fill 填充x(y)方向上的空间,当 属性side=”top”或”bottom”时,填充x方向;当属性side=”left”或”right”时, 填充”y”方向;当expand选项为”yes”时,填充父组件的剩余空间。 “x”, “y”, “both”

     

    (默认值为待选)

    ipadx, ipady 组件内部在x(y)方向上填充 的空间大小,默认单位为像素,可选单位为c(厘 米)、m(毫米)、

     

    i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。

    非负浮点数

     

    (默认值为0.0)

    padx, pady 组件外部在x(y)方向上填充 的空间大小,默认单位为像素,可选单位为c(厘 米)、m(毫米)、

     

    i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。

    非负浮点数

     

    (默认值为0.0)

    side 定义停靠在父组件的哪一边上。 “top”, “bottom”, “left”, “right”

     

    (默认为”top”)

    before 将本组件于所选组建对象之前pack, 类似于先创建本组件再创建选定组件。 已经pack后的组件对象
    after 将本组件于所选组建对象之后pack, 类似于先创建选定组件再本组件。 已经pack后的组件对象
    in_ 将本组件作为所选组建对象的子组件,类似于指定本组件的master为 选定组件。 已经pack后的组件对象
    anchor 对齐方式,左对齐”w”,右对 齐”e”,顶对齐”n”,

     

    底对齐”s”

    “n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”

     

    (默认为” center”)

    注:以上选项中可以看出expand、fill和side是相互影响的。

    典型例子:(默认引用为from Tkinter import *)

           单组件填充满父组件:

                  text = Text(root, …)

    text.pack(expand=YES, fill=”both”)           Tkitkinter模块提供了一系列大写值,其等价于字符型小写值,即Tkinter,YES  = =  “yes”

          

    多组件布局(从左往右):                      默认布局是从上往下。

                  btn = Button(root, …)

                  btn.pack(side=LEFT, padx=<chmetcnv unitname=”C” sourcevalue=”4″ hasspace=”False” negative=”False” numbertype=”1″ tcsc=”0″ w:st=”on”></chmetcnv>4c)                x轴左右拓展4厘 米。

                  Text(root, …).pack(side=LEFT)

     


           pack类提供了下列函数:

     

    函数名 描述
    slaves() 以列表方式返回本组件的所有子组件对象。
    propagate(boolean) 设置为True表示父组件的几 何大小由子组件决定(默认值),反之则无关。
    info() 返回pack提供的选项所对应 得值。
    forget() Unpack组件,将组件隐藏 并且忽略原有设置,对象依旧存在,可以用pack(option, …), 将其显示。
    location(x, y) x, y为以像素为单位的点, 函数返回此点是否在单元格中,在哪个单元格中。返回单元格行列坐标,(-1, -1)表示不在其中。
    size() 返回组件所包含的单元格,揭示组件大小。

     

    grid()

    grid几何管理采用类似表 格的结构组织配件,使用起来非常灵活,用其设计对话框和带有滚动条的窗体效果最好。grid采 用行列确定位置,行列交汇处为一个单元格。每一列中,列宽由这一列中最宽的单元格确定。每一行中,行高由这一行中最高的单元格决定。组件并不是充满整个单 元格的,你可以指定单元格中剩余空间的使用。你可以空出这些空间,也可以在水平或竖直或两个方向上填满这些空间。你可以连接若干个单元格为一个更大空间, 这一操作被称作跨越。创建的单元格必须相临。

     

           使用grid()布局的通用公式为:

           WidgetObject.grid(option, …)

     


           grid方 法提供了下列option选项,选项可以直接赋值 或以字典变量加以修改:

     

    名称 描述 取值范围
    column 组件所置单元格的列号。 自然数(起始默认值为0,而后 累加)
    columnspan 从组件所置单元格算起在列方向上的跨度。 自然数(起始默认值为0)
    ipadx, ipady 组件内部在x(y)方向上填充 的空间大小,默认单位为像素,可选单位为c(厘 米)、m(毫米)、

     

    i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。

    非负浮点数

     

    (默认值为0.0)

    padx, pady 组件外部在x(y)方向上填充 的空间大小,默认单位为像素,可选单位为c(厘 米)、m(毫米)、

     

    i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。

    非负浮点数

     

    (默认值为0.0)

    row 组件所置单元格的行号。 自然数(起始默认值为0,而后 累加)
    rowspan 从组件所置单元格算起在行方向上的跨度。 自然数(起始默认值为0)
    in_ 将本组件作为所选组建对象的子组件,类似于指定本组件的master为 选定组件。 已经pack后的组件对象
    sticky 组件紧靠所在单元格的某一边角。 “n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”

     

    (默认为” center”)

    典型例子:(默 认引用为from Tkinter import *)

           单组件填充满父组件:

                  text = Text(root, …)

    root.rowconfigure(0, weight=1)

    root.columnconfigure (0, weight=1)        可 以可以看出,用grid填充不如pack方便。

          

    多组件布局(滚动条):                        效果肯定是3种布 局方式中最好的。

                  text = Text(root, …)

    text.grid()

    # 纵 向

                  sb = Scrollbar(root, …)

            sb.grid(row=0, column=1, sticky=’ns’)

            text.configure(yscrollcommand=sb.set)

            sb.configure(command=text.yview)

                  # 横向

            sb = Scrollbar(root, orient=’horizontal’, …)

            sb.grid(row=1, column=0, sticky=’ew’)

            text.configure(xscrollcommand=sb.set)

            sb.configure(command=text.xview)

      

    转载于:https://www.cnblogs.com/hester/p/4872337.html

    展开全文
  • python之Tkinter界面创建

    2021-06-15 14:37:45
    一、导入tkinter模块 ...创建主窗口 title() 设置窗口的标题,默认为tk geometry(“widthxheigh+x+y”) 设置窗口的宽、高,屏幕的位置 configure(bg=“color”) 设置窗口的背景颜色 iconbitmap

    一、导入tkinter模块

    在安装Python的时候,已经安装好了tkinter这个模块,使用时只需导入。

    import tkinter
    from tkinter import *
    

    二、界面创建

    (一)窗口建立

    1.窗口属性

    属性 说明
    TK() 创建主窗口
    title() 设置窗口的标题,默认为tk
    geometry(“widthxheigh+x+y”) 设置窗口的宽、高,在屏幕中的位置
    configure(bg=“color”) 设置窗口的背景颜色
    iconbitmap(“xx.ico”) 设置窗口的图标
    maxsiza(width, height) 设置拖拽时窗口最大的宽与高
    minsiza(width, height) 设置拖拽时窗口最小的宽与高
    resizable(True, True) 设置是否更改窗口大小
    state(“zoomed”) 最大化窗口
    iconify() 最小化窗口
    mainloop() 保持窗口运行

    (1)创建主窗口

    init_window = Tk()  ## 实例化出一个父窗口
    init_window.mainloop()  ## 父窗口进入事件循环,可以理解为保持窗口运行,否则界面不展示
    

    tkinter运行时主窗口图

    (2)设置窗口标题

    init_window.title("ERROR")   ## 设置窗口名
    

    在这里插入图片描述

    (3)设置窗口宽高

    init_window.geometry('%dx%d+%d+%d' % (1068, 681, 10, 10))  ## 设置窗口大小
    ## geometry (widthxheight+x+y)
    

    上述widthxheight已说明是窗口的宽和高,width 与height用x分隔。“+x”表示x是窗口左边距离屏幕左边的距离,如果是“-x”,则表示x是窗口右边距离屏幕右边的距离。“+y"表示y是窗口上边距离屏幕上边的距离,如果是“-y”则表示y是窗口下边距离屏幕下边的距离。
    在这里插入图片描述
    例1 设计窗口并放在屏幕中央

    import tkinter
    init_window= tkinter.Tk()  ## 创建主窗口
    screenWindth =init_window.winfo_screenwidth()  ## 获取屏幕宽度
    screenHeight = init_window.winfo_screenheight()  ## 获取屏幕高度
    w = 300
    h = 160
    x = (screenWindth - w) / 2
    y = (screenHeight - h) / 2
    init_window.geometry("%dx%d+%d+%d" % (w, h, x, y))
    init_window.mainloop()  # 放在程序最后一行,使程序继续执行
    

    (4)窗口背景颜色

    init_window["bg"] = "WhiteSmoke"   ## 窗口背景颜色
    
    十六进制色码 英文 中文
    #FFB6C1 LightPink 浅粉红
    #FFC0CB Pink 粉红
    #DC143C Crimson 深红/猩红
    #FFF0F5 LavenderBlush 淡紫红
    #DB7093 PaleVioletRed 弱紫罗兰红
    #FF69B4 HotPink 热情的粉红
    #FF1493 DeepPink 深粉红
    #C71585 MediumVioletRed 中紫罗兰红
    #DA70D6 Orchid 暗紫色/兰花紫
    #D8BFD8 Thistle 蓟色
    #DDA0DD Plum 洋李色/李子紫
    #EE82EE Violet 紫罗兰
    #FF00FF Magenta 洋红/玫瑰红
    #FF00FF Fuchsia 紫红/灯笼海棠
    #8B008B DarkMagenta 深洋红
    #800080 Purple 紫色
    #BA55D3 MediumOrchid 中兰花紫
    #9400D3 DarkViolet 暗紫罗兰
    #9932CC DarkOrchid 暗兰花紫
    #4B0082 Indigo 靛青/紫兰色
    #8A2BE2 BlueViolet 蓝紫罗兰
    #9370DB MediumPurple 中紫色
    #7B68EE MediumSlateBlue 中暗蓝色/中板岩蓝
    #6A5ACD SlateBlue 石蓝色/板岩蓝
    #483D8B DarkSlateBlue 暗灰蓝色/暗板岩蓝
    #E6E6FA Lavender 淡紫色/熏衣草淡紫
    #F8F8FF GhostWhite 幽灵白
    #0000FF Blue 纯蓝
    #0000CD MediumBlue 中蓝色
    #191970 MidnightBlue 午夜蓝
    #00008B DarkBlue 暗蓝色
    #000080 Navy 海军蓝
    #4169E1 RoyalBlue 皇家蓝/宝蓝
    #6495ED CornflowerBlue 矢车菊蓝
    #B0C4DE LightSteelBlue 亮钢蓝
    #778899 LightSlateGray 亮蓝灰/亮石板灰
    #708090 SlateGray 灰石色/石板灰
    #1E90FF DodgerBlue 闪兰色/道奇蓝
    #F0F8FF AliceBlue 爱丽丝蓝
    #4682B4 SteelBlue 钢蓝/铁青
    #87CEFA LightSkyBlue 亮天蓝色
    #87CEEB SkyBlue 天蓝色
    #00BFFF DeepSkyBlue 深天蓝
    #ADD8E6 LightBlue 亮蓝
    #B0E0E6 PowderBlue 粉蓝色/火药青
    #5F9EA0 CadetBlue 军兰色/军服蓝
    #F0FFFF Azure 蔚蓝色
    #E0FFFF LightCyan 淡青色
    #AFEEEE PaleTurquoise 弱绿宝石
    #00FFFF Cyan 青色
    #00FFFF Aqua 浅绿色/水色
    #00CED1 DarkTurquoise 暗绿宝石
    #2F4F4F DarkSlateGray 暗瓦灰色/暗石板灰
    #008B8B DarkCyan 暗青色
    #008080 Teal 水鸭色
    #48D1CC MediumTurquoise 中绿宝石
    #20B2AA LightSeaGreen 浅海洋绿
    #40E0D0 Turquoise 绿宝石
    #7FFFD4 Aquamarine 宝石碧绿
    #66CDAA MediumAquamarine 中宝石碧绿
    #00FA9A MediumSpringGreen 中春绿色
    #F5FFFA MintCream 薄荷奶油
    #00FF7F SpringGreen 春绿色
    #3CB371 MediumSeaGreen 中海洋绿
    #2E8B57 SeaGreen 海洋绿
    #F0FFF0 Honeydew 蜜色/蜜瓜色
    #90EE90 LightGreen 淡绿色
    #98FB98 PaleGreen 弱绿色
    #8FBC8F DarkSeaGreen 暗海洋绿
    #32CD32 LimeGreen 闪光深绿
    #00FF00 Lime 闪光绿
    #228B22 ForestGreen 森林绿
    #008000 Green 纯绿
    #006400 DarkGreen 暗绿色
    #7FFF00 Chartreuse 黄绿色/查特酒绿
    #7CFC00 LawnGreen 草绿色/草坪绿
    #ADFF2F GreenYellow 绿黄色
    #556B2F DarkOliveGreen 暗橄榄绿
    #9ACD32 YellowGreen 黄绿色
    #6B8E23 OliveDrab 橄榄褐色
    #F5F5DC Beige 米色/灰棕色
    #FAFAD2 LightGoldenrodYellow 亮菊黄
    #FFFFF0 Ivory 象牙色
    #FFFFE0 LightYellow 浅黄色
    #FFFF00 Yellow 纯黄
    #808000 Olive 橄榄
    #BDB76B DarkKhaki 暗黄褐色/深卡叽布
    #FFFACD LemonChiffon 柠檬绸
    #EEE8AA PaleGoldenrod 灰菊黄/苍麒麟色
    #F0E68C Khaki 黄褐色/卡叽布
    #FFD700 Gold 金色
    #FFF8DC Cornsilk 玉米丝色
    #DAA520 Goldenrod 金菊黄
    #B8860B DarkGoldenrod 暗金菊黄
    #FFFAF0 FloralWhite 花的白色
    #FDF5E6 OldLace 老花色/旧蕾丝
    #F5DEB3 Wheat 浅黄色/小麦色
    #FFE4B5 Moccasin 鹿皮色/鹿皮靴
    #FFA500 Orange 橙色
    #FFEFD5 PapayaWhip 番木色/番木瓜
    #FFEBCD BlanchedAlmond 白杏色
    #FFDEAD NavajoWhite 纳瓦白/土著白
    #FAEBD7 AntiqueWhite 古董白
    #D2B48C Tan 茶色
    #DEB887 BurlyWood 硬木色
    #FFE4C4 Bisque 陶坯黄
    #FF8C00 DarkOrange 深橙色
    #FAF0E6 Linen 亚麻布
    #CD853F Peru 秘鲁色
    #FFDAB9 PeachPuff 桃肉色
    #F4A460 SandyBrown 沙棕色
    #D2691E Chocolate 巧克力色
    #8B4513 SaddleBrown 重褐色/马鞍棕色
    #FFF5EE Seashell 海贝壳
    #A0522D Sienna 黄土赭色
    #FFA07A LightSalmon 浅鲑鱼肉色
    #FF7F50 Coral 珊瑚
    #FF4500 OrangeRed 橙红色
    #E9967A DarkSalmon 深鲜肉/鲑鱼色
    #FF6347 Tomato 番茄红
    #FFE4E1 MistyRose 浅玫瑰色/薄雾玫瑰
    #FA8072 Salmon 鲜肉/鲑鱼色
    #FFFAFA Snow 雪白色
    #F08080 LightCoral 淡珊瑚色
    #BC8F8F RosyBrown 玫瑰棕色
    #CD5C5C IndianRed 印度红
    #FF0000 Red 纯红
    #A52A2A Brown 棕色
    #B22222 FireBrick 火砖色/耐火砖
    #8B0000 DarkRed 深红色
    #800000 Maroon 栗色
    #FFFFFF White 纯白
    #F5F5F5 WhiteSmoke 白烟
    #DCDCDC Gainsboro 淡灰色
    #D3D3D3 LightGrey 浅灰色
    #C0C0C0 Silver 银灰色
    #A9A9A9 DarkGray 深灰色
    #808080 Gray 灰色
    #696969 DimGray 暗淡灰
    #000000 Black 纯黑
    展开全文
  • 主窗口就是你的程序开始运行的时候创建的,在主窗口中你通常是放置了你主要的部件.另外,Tkinter脚本可以依据需要创建很多独立的窗口,主要的方法就是通过创建Toplevel对象。 每一个Toplevel对象都创建一个显示的窗口,...

    Tkinter中的GUI总是有一个root窗口,不管你是主动或者别动获得.主窗口就是你的程序开始运行的时候创建的,在主窗口中你通常是放置了你主要的部件.另外,Tkinter脚本可以依据需要创建很多独立的窗口,主要的方法就是通过创建Toplevel对象。
            每一个Toplevel对象都创建一个显示的窗口,不需要通过mainloop方法调用。

    关于Toplevel和Tk部件:
           一个Toplevel象一个Frame,并且可以通过额外的方法来让你处理Toplevel窗口的属性。
           而Tk更像一个Toplevel,但是它用于描绘程序主窗口的外貌。

    Tkinter GUI都是按照层次来创建的,默认你可以有一个根窗口(root window).

    一,Tkinter介绍 Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口。Tkinter不是唯一的python图形编 程接口,但是是其中比较流行的一个。最大的特点是跨

    一,Tkinter介绍

    Tkinter 是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口。Tkinter不是唯一的python图形编程接口,但是是 其中比较流行的一个。最大的特点是跨平台,缺点是性能不太好,执行速度慢。

    一 般使用Tkinter的方法是:

    From Tkinter import *

    或 者: import Tkinter 两者的区别我们前面讲模块的时候已经说过了。

    二,Tkinter的使用。

    先 看一下GUI程序的开发,熟悉MFC的朋友应该不会陌生。在GUI程序中,我们会有一个顶层窗口,在这个顶层窗口上可以包括所有的小窗口对象,像标签,按 钮,列表框等等,也就是说顶层窗口时我们放置其他窗口或者控件的地方。我们用下面的语句可以创建一个顶层窗口,或者叫根窗口:

    Import Tkinter

    top = Tkinter.Tk()

    (如 果前面是用的from Tkinter import * ,那么Tk()就够了)

    然 后我们就可以在这个根窗口上设置“组件”了。通常这些组件会有一些相应的行为,比如鼠标点击,按下等等,这些称为事件,而程序会根据这些时间采取相应的反 应,称为回调。这个过程成为事件驱动。

    所 有的创建和放置完毕后,就立刻进入主循环,代码如下:

    Tkinter.mainloop( )

    Tk 的组件有很多,不可能一一介绍,通过一个小例子看看其中一个标签的使用吧。

    >>> import Tkinter

    >>> top = Tkinter.Tk()

    >>> label = Tkinter.Label(top,text=’Hello World’)

    >>> label.pack()

    >>> Tkinter.mainloop()

    运 行结果就是

    下 面解释一下:
           第一行,是导入模块。

    第 二行,创建主窗口。

    第 三行,创建label标签,它是有Tkinter的一个方法Label来实现的,关于Label的帮助可以help一下。

    第 四行,pack()是用来管理和显示组件的,它的参数我们以后再说。

    第 五行,mainloop()进入主循环。剩下的事就系统的了。

    下 面看看组件的配置。Tk中的每一个组件都有很多option,通过改变这些option可以改变组件的外观,比如显示的内容,颜色,大小,位置,事件处理 函数等。

    比 如: w=label(root,text=’hello’,fg=’red’)

    创 建一个w,第一个参数时他的master widget,是root,所有参数都有默认的。我们可以用默认的来创建,w.cget(option)得到一个option的值。同样可以用 w.config(option=’’)来设置某个参数的值。

    三,Tkinter的几何管理器。

    熟 悉GUI编程的人知道,放好每个组件的是很繁琐的,不仅要调整自身大小,还要

    整 和其他组件的相对位置。Tk提供了三个管理器来帮助我们:Pack  Grid  Place

    1 pack

    Pack 使用很简单,就是w.pack(option)。常用的option有:

    Side 表示把组件放到哪一边,TOP(上),BOTTOM(下),LEFT,RIGHT

    Padx 和pady  表示parcel的每一个边和组件的预留空间。

    Ipadx 和ipady,表示组件的每一个边和他包含的内容之间的预留空间。

    Anchor 表示在parcel放置组件的方式,缺省时CENTER。

    2 grid

    使 用方法和pack类似。

    3 place

    精 确的摆放一个组件的位置,一般不太用。

    关 于这个三个的详细使用和算法可以参考相关资料


    看 一下代码:

    from Tkinter import *  #引入模块

    #resize函数是用来改变文字大小的,当进度条改变时调用

    def resize(ev=None):

    label.config(font=’Helvetica -%d bold’ % scale.get())

    #config函数就是通过设置组件的参数来改变组件的,这里改变的是font字体大小

    top=Tk()   #主窗口

    top.geometry(’600×400′)  #设置了主窗口的初始 大小600×400

    label=Label(top,text=’Hello world!’,font=’Helvetica -12 bold’)  #设置标签字体的初始大 小

    label.pack(fill=Y,expand=1)

    #scale创建进度条,设置

    scale=Scale(top,from_=10,to=40,orient=HORIZONTAL,command=resize)

    scale.set(12)  #设置起始位置

    scale.pack(fill=X,expand=1)

    quit = Button(top,text=’QUIT’,command=top.quit,activeforeground=’white’,

    activebackground=’red’)

    quit.pack()

    mainloop()

    所有的 Tkinter 组件都包含专用的几何管理方法,这些方法是用来组织和管理整个父配件区中子配件的布局的。 Tkinter 提供了截然不同的三种几何管理类: pack 、 grid 和 place 。 pack() pac

     

     

    函数名描述
    slaves()以列表方式返回本组件的所有子组件对象。
    propagate(boolean)设置为True表 示父组件的几何大小由子组件决定(默认值),反之则无关。
    info()返回pack提 供的选项所对应得值。
    forget()Unpack组 件,将组件隐藏并且忽略原有设置,对象依旧存在,可以用pack(option, …),将其显示。
    grid_remove () 

     

     

    所有的Tkinter组件都包含专用的几何管理方法,这些方法是用 来组织和管理整个父配件区中子配件的布局的。Tkinter提 供了截然不同的三种几何管理类:pack、grid和place。

     

     
    pack()

           pack几何管理采用块的方式组织配件,在快速生成界面设计中广泛采用,若干组件简单的布局, 采用pack的代码量最少。pack几何管理程序根据组件创建生成的顺序将组件添加到父组 件中去。通过设置相同的锚点(anchor)可以 将一组配件紧挨一个地方放置,如果不指定任何选项,默认在父窗体中自顶向下添加组件。

          使用pack()布局的通用公式为:

          WidgetObject.pack(option, …)

          pack方 法提供了下列option选项,选项可以直接赋值 或以字典变量加以修改:

     

    名称描述取值范围
    expand当值为“yes”时,side选项无效。组件显示在父配件中心位置;若fill选项为”both”,则填充父组件的剩余空间。“yes”, 自然数, “no”, 0

     (默认值为“no”或0)

    fill填充x(y)方向上的空间,当 属性side=”top”或”bottom”时,填充x方向;当属性side=”left”或”right”时, 填充”y”方向;当expand选项为”yes”时,填充父组件的剩余空间。“x”, “y”, “both”

    (默认值为待选)

    ipadx, ipady组件内部在x(y)方向上填充 的空间大小,默认单位为像素,可选单位为c(厘 米)、m(毫米)、

    i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。

    非负浮点数

    (默认值为0.0)

    padx, pady组件外部在x(y)方向上填充 的空间大小,默认单位为像素,可选单位为c(厘 米)、m(毫米)、

    i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。

    非负浮点数

    (默认值为0.0)

    side定义停靠在父组件的哪一边上。“top”, “bottom”, “left”, “right”

    (默认为”top”)

    before将本组件于所选组建对象之前pack, 类似于先创建本组件再创建选定组件。已经pack后的组件对象
    after将本组件于所选组建对象之后pack, 类似于先创建选定组件再本组件。已经pack后的组件对象
    in_将本组件作为所选组建对象的子组件,类似于指定本组件的master为 选定组件。已经pack后的组件对象
    anchor对齐方式,左对齐”w”,右对 齐”e”,顶对齐”n”,

    底对齐”s”

    “n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”

    (默认为” center”)



           pack类提供了下列函数:

     

    函数名描述
    slaves()以列表方式返回本组件的所有子组件对象。
    propagate(boolean)设置为True表示父组件的几 何大小由子组件决定(默认值),反之则无关。
    info()返回pack提供的选项所对应 得值。
    forget()Unpack组件,将组件隐藏 并且忽略原有设置,对象依旧存在,可以用pack(option, …), 将其显示。
    location(x, y)x, y为以像素为单位的点, 函数返回此点是否在单元格中,在哪个单元格中。返回单元格行列坐标,(-1, -1)表示不在其中。
    size()返回组件所包含的单元格,揭示组件大小。

     

    grid()

    grid几何管理采用类似表 格的结构组织配件,使用起来非常灵活,用其设计对话框和带有滚动条的窗体效果最好。grid采 用行列确定位置,行列交汇处为一个单元格。每一列中,列宽由这一列中最宽的单元格确定。每一行中,行高由这一行中最高的单元格决定。组件并不是充满整个单 元格的,你可以指定单元格中剩余空间的使用。你可以空出这些空间,也可以在水平或竖直或两个方向上填满这些空间。你可以连接若干个单元格为一个更大空间, 这一操作被称作跨越。创建的单元格必须相临。


           使用grid()布局的通用公式为:

           WidgetObject.grid(option, …)

     


           grid方 法提供了下列option选项,选项可以直接赋值 或以字典变量加以修改:

     

    名称描述取值范围
    column组件所置单元格的列号。自然数(起始默认值为0,而后 累加)
    columnspan从组件所置单元格算起在列方向上的跨度。自然数(起始默认值为0)
    ipadx, ipady组件内部在x(y)方向上填充 的空间大小,默认单位为像素,可选单位为c(厘 米)、m(毫米)、

    i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。

    非负浮点数

    (默认值为0.0)

    padx, pady组件外部在x(y)方向上填充 的空间大小,默认单位为像素,可选单位为c(厘 米)、m(毫米)、

    i(英寸)、p(打印机的点,即1/27英寸),用法为在值后加以上一个后缀既可。

    非负浮点数

    (默认值为0.0)

    row组件所置单元格的行号。自然数(起始默认值为0,而后 累加)
    rowspan从组件所置单元格算起在行方向上的跨度。自然数(起始默认值为0)
    in_将本组件作为所选组建对象的子组件,类似于指定本组件的master为 选定组件。已经pack后的组件对象
    sticky组件紧靠所在单元格的某一边角。“n”, “s”, “w”, “e”, “nw”, “sw”, “se”, “ne”, “center”

    (默认为” center”)

    典型例子:(默 认引用为from Tkinter import *)

    # -*- coding: utf-8 -*-
    """
    Created on Thu Jun 28 22:10:51 2018
    
    @author: Administrator
    """
    
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
     
    from Tkinter import * 
    
    
    class App:  
        def __init__(self, master):  
            #构造函数里传入一个父组件(master),创建一个Frame组件并显示  
            frame = Frame(master) 
            master.geometry('400x200')
            frame.pack()  
            #创建两个button,并作为frame的一部分  
            self.urlpLabel= Label(frame,text=u"软件位置")
            self.urlpLabel.grid(row=0,column=0)  
            sf_text = StringVar()        
            self.sf = Entry(frame, textvariable = sf_text)
            sf_text.set(u"输入软件位置")
            self.sf.grid(row=0,column=1)
            ps_text = StringVar()  
            self.pstext = Entry(frame,textvariable = ps_text)
            ps_text.set(u"输入密码")
            self.pstext.grid(row=0,column=2)
            
            
            
            self.sftime = Label(frame,text=u"启动时间")
            self.sftime.grid(row=1,column=0)
            tt = StringVar() 
            self.sfttext= Entry(frame,textvariable = tt)
            tt.set(u"24:24")
            self.sfttext.grid(row=1,column=1)
            self.hobby1 = BooleanVar()  
            self.checkb1 = Checkbutton(frame,text = u"启动",variable = self.hobby1)  
            self.checkb1.grid(row=1,column=2)
            
            self.httplab = Label(frame,text=u"服务器启动")
            self.httplab.grid(row=2,column=0)
            htt = StringVar() 
            self.httpport= Entry(frame,textvariable = htt)
            htt.set(u"服务器端口")
            self.httpport.grid(row=2,column=1)
            self.hobby2 = BooleanVar()  
            self.checkb2 = Checkbutton(frame,text = u"启动",variable = self.hobby2)  
            self.checkb2.grid(row=2,column=2)        
            
            
            
            self.button = Button(frame, text=u"启动", fg="red", command=self.start)  
            self.button.grid(row=3,column=0) #此处side为LEFT表示将其放置 到frame剩余空间的最左方 
            
            self.hi_there = Button(frame, text=u"测试", command=self.appStart)  
            self.hi_there.grid(row=3,column=1) 
            
        def start(self):
    
            self.startHtt()
            
        def appStart(self):
            print 'ss'
    
    #top = Tkinter.Tk()
    
    win = Tk()  
    app = App(win) 
    win.mainloop()


    展开全文
  • Python tkinter中 图形 无法显示

    千次阅读 2018-12-22 11:57:48
    调用该类并执行循环,窗口中无法显示使用的图像,代码如下: from tkinter import * class Demo(Frame): def __init__(self, parent=None): Frame.__init__(self, parent) self.pa...
  • Python中tkinter的mainloop函数实质

    万次阅读 多人点赞 2019-09-05 22:33:31
    4.调用循环,显示窗口,同时开始tkinter的事件循环。 mainloop方法最后执行,将标签显示屏幕,进入等待状态(注:若组件未打包,则不会在窗口中显示),准备响应用户发起的GUI事件。mainloop...
  • Python3中tkinter模块使用方法详解

    万次阅读 多人点赞 2018-07-29 09:53:25
    转载自 覆手为云p 的博客,附上原文网址,感觉非常有用,存下档,...1、使用tkinter.Tk() 生成主窗口(root=tkinter.Tk()); root.title('标题名') 修改框体的名字,也可在创建时使用className参数来命名; root...
  • Toplevel()方法的含义是建立Tk()主窗口上面的顶层窗口,我们本书称为弹出窗口PopWindow。因为它为我们提供了很多高级功能,例如独立窗口工具栏,信息气泡等等都是用Toplevel()方法实现的,就像大窗口弹出的小...
  • tkinter模块

    2019-08-22 15:34:29
    1. 导入tkinter模块我们需要的东西。 2. 创建一个顶层窗口对象并用它来承载整个GUI应用。 3. 顶层窗口对象上添加GUI组件。 4. 通过代码将这些GUI组件的功能组织起来。 5. 进入事件循环(main loop)。 ...
  • python中tkinter的使用(控件整理)(一)

    万次阅读 多人点赞 2018-03-17 22:25:52
    1、使用tkinter.Tk() 生成主窗口(window=tkinter.Tk()):window.title('标题名') 修改框体的名字,也可在创建时使用className参数来命名;window.resizable(0,0) 框体大小可调性,分别表示x,y方向的可变性;1表示...
  • tkinter简明学习

    2018-02-07 10:57:37
    写一个简单的界面很容易,即使...python中创建一个窗口,然后显示出来。 [python] view plain copy from tkinter import * root = Tk() root.mainloop()  就3行就能够把主窗口显示出来了。ro
  • Canvas,是TKinter中用于图形绘制或复杂的图形界面布局。其中文翻译为:画布。...windows = TK() #创建主窗口 Canvas对象 = Canvas(主窗口,选项,) #创建一个Canvas对象 下面给出常用的选项 属性 说明 b
  • Python3.7+tkinter实现查询界面

    千次阅读 2019-12-22 17:10:42
    上一篇博客的爬虫数据存储sqlite,这里用tkinter实现一个简单的查询界面 #!/usr/bin/python # -*- coding: UTF-8 -*- from tkinter import * import sqlite3 ... #创建主窗口 root = Tk()...
  • 1、使用tkinter.Tk() 生成主窗口(root=tkinter.Tk()); root.title(‘标题名’) 修改框体的名字,也可在创建时使用className参数来命名; root.resizable(0,0) 框体大小可调性,分别表示x,y方向的可变性; 2、...
  • Python_tkinter_菜单(Menu)

    千次阅读 2018-12-02 21:11:37
    在tkinter中,菜单组件的添加与其他组件有所不同。 菜单需要使用所创建主窗口的 config方法添加到窗口中。 这个小工具的目标是,让我们来创建我们的应用程序,可以通过使用各种菜单。核心功能,提供的方式来创建...
  • 创建主窗口(容器) 3.将任意数量的小部件添加到主窗口。 4.小部件上应用事件触发器。 2.BMI计算器(BMI CALCULATOR.py): 我使用了一些小工具(例如滑块,下拉菜单,按钮)制作了这个BMI计算器应用程序。 看...
  • tkinter菜单组件Menu

    2021-02-01 20:54:31
    图形用户界面应用程序通常提供菜单,菜单包含各种按照主题分组的基本命令,通常图形用户界面程序包含两种类型菜单。 (1)菜单:提供窗体的菜单...将Meun对象显示在窗口中 root[“menu”] = m root.mainloop() #使用M
  • 概述 ...4.调用循环,显示窗口,同时开始tkinter的事件循环; mainloop方法最后执行,将标签显示屏幕,进入tkinter等待状态,准备响应用户发起的GUI事件。mainloop函数tkinter内部会监控这
  • Label组件描述 该组件的作用是界面显示文字信息,或者显示图片。 但是要注意的是:tkinter.PhotoImage()仅支持 GIF、PNG、PGM/PPM...# 创建一个主窗口 root = tk.Tk() # 创建两个框架 frame1 = tk.Frame(root...
  • 上节课,所以我们创建了一个框架,在主框架中创建了一个横幅,但是这只是界面的一部分,这节课我们就来完善它。现在,我们需要按钮来启动和停止我们的计时器。所以,让我们创建2个按钮,并将它们添加到窗口的底部...
  • 分析过程,所有检测到的基本片段都标记程序窗口中,并且还会创建一个带有注释的附加文件,其中包含片段开始和停止的时间以及检测到的对象。 如果视频文件包含有关录制时间的元数据,则注释文件将片段的时间...
  • 主窗口创建 模块的导入 from tkinter import * 生成主窗口 win=Tk() 修改框体的名字 win.title("名字") 指定主框体大小 win.geometry('400x400') 进入消息循环 win.mainloop() 结果展示 tkinter中的组件 ...
  • 7.3用Tkinter创建主窗口式应用程序 7.3.1创建主窗口 7.3.2创建菜单 7.3.3创建带计分器的状态栏第8章用OpenGL绘制3D图形 8.1用透视投影法创建场景 8.1.1用PyOpenGL编写Cylinder程序 8.1.2用pyglet编写Cylinder...
  • python Tk()、Frame()、TopLevel()用法

    千次阅读 2019-05-10 11:08:32
    Frame():创建控件容器,可依附窗口 TopLevel():创建弹出式窗口 示例1: import tkinter #主窗口: window = tkinter.Tk()#创建窗口 window.title("简易版小程序")#设置标题 #创建控件容器frameDemo1 ...
  • GUI编程大体课分为下面的步骤: 1.创建一个主窗口对象,来包含其他所以的组件 2.主窗口添加其他组件,并把它们连接起来 ...t=tkinter.Tk() #创建主窗口对象 .. .. .. tkinter.mainloop() #主事件循环
  • PYTHON GUI编程

    2020-12-21 19:05:51
    所以创建GUI应用的第一步是为你的应用创建主窗口,被叫做根窗口。 你可以创建一个Tk对象来完成这件事情,这个对象包含了你的窗口的方方面面。要创建一个Tk对象,首先是导入tkinter库,然后初始化一个Tk对象,代码...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
关键字:

在tkinter中创建主窗口