zoukankan      html  css  js  c++  java
  • 转载一个tk实例

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import tkinter as tk
    from tkinter import ttk
    from tkinter import scrolledtext        # 导入滚动文本框的模块
    
    win = tk.Tk()
    win.title("Python GUI")    # 添加标题
    
    # 创建一个容器,
    monty = ttk.LabelFrame(win, text=" Monty Python ")     # 创建一个容器,其父容器为win
    monty.grid(column=0, row=0, padx=10, pady=10)       # padx  pady   该容器外围需要留出的空余空间
    aLabel = ttk.Label(monty, text="A Label")
    
    ttk.Label(monty, text="Chooes a number").grid(column=1, row=0)    # 添加一个标签,并将其列设置为1,行设置为0
    ttk.Label(monty, text="Enter a name:").grid(column=0, row=0, sticky='W')      # 设置其在界面中出现的位置  column代表列   row 代表行
    
    # button被点击之后会被执行
    def clickMe():   # 当acction被点击时,该函数则生效
        action.configure(text='Hello ' + name.get() + ' ' + numberChosen.get())     # 设置button显示的内容
        print('check3 is %s %s' % (type(chvarEn.get()), chvarEn.get()))
    
    # 按钮
    action = ttk.Button(monty, text="Click Me!", command=clickMe)     # 创建一个按钮, text:显示按钮上面显示的文字, command:当这个按钮被点击之后会调用command函数
    action.grid(column=2, row=1)    # 设置其在界面中出现的位置  column代表列   row 代表行
    
    # 文本框
    name = tk.StringVar()     # StringVar是Tk库内部定义的字符串变量类型,在这里用于管理部件上面的字符;不过一般用在按钮button上。改变StringVar,按钮上的文字也随之改变。
    nameEntered = ttk.Entry(monty, width=12, textvariable=name)   # 创建一个文本框,定义长度为12个字符长度,并且将文本框中的内容绑定到上一句定义的name变量上,方便clickMe调用
    nameEntered.grid(column=0, row=1, sticky=tk.W)       # 设置其在界面中出现的位置  column代表列   row 代表行
    nameEntered.focus()     # 当程序运行时,光标默认会出现在该文本框中
    
    # 创建一个下拉列表
    number = tk.StringVar()
    numberChosen = ttk.Combobox(monty, width=12, textvariable=number, state='readonly')
    numberChosen['values'] = (1, 2, 4, 42, 100)     # 设置下拉列表的值
    numberChosen.grid(column=1, row=1)      # 设置其在界面中出现的位置  column代表列   row 代表行
    numberChosen.current(0)    # 设置下拉列表默认显示的值,0为 numberChosen['values'] 的下标值
    
    # 复选框
    chVarDis = tk.IntVar()   # 用来获取复选框是否被勾选,通过chVarDis.get()来获取其的状态,其状态值为int类型 勾选为1  未勾选为0
    check1 = tk.Checkbutton(monty, text="Disabled", variable=chVarDis, state='disabled')    # text为该复选框后面显示的名称, variable将该复选框的状态赋值给一个变量,当state='disabled'时,该复选框为灰色,不能点的状态
    check1.select()     # 该复选框是否勾选,select为勾选, deselect为不勾选
    check1.grid(column=0, row=4, sticky=tk.W)       # sticky=tk.W  当该列中其他行或该行中的其他列的某一个功能拉长这列的宽度或高度时,设定该值可以保证本行保持左对齐,N:北/上对齐  S:南/下对齐  W:西/左对齐  E:东/右对齐
    
    chvarUn = tk.IntVar()
    check2 = tk.Checkbutton(monty, text="UnChecked", variable=chvarUn)
    check2.deselect()
    check2.grid(column=1, row=4, sticky=tk.W)
    
    chvarEn = tk.IntVar()
    check3 = tk.Checkbutton(monty, text="Enabled", variable=chvarEn)
    check3.select()
    check3.grid(column=2, row=4, sticky=tk.W)
    
    # 单选按钮
    
    # 定义几个颜色的全局变量
    colors = ["Blue", "Gold", "Red"]
    
    # 单选按钮回调函数,就是当单选按钮被点击会执行该函数
    def radCall():
        radSel = radVar.get()
        if radSel == 0:
            win.configure(background=colors[0])      # 设置整个界面的背景颜色
            print(radVar.get())
        elif radSel == 1:
            win.configure(background=colors[1])
        elif radSel == 2:
            win.configure(background=colors[2])
    
    radVar = tk.IntVar()    # 通过tk.IntVar() 获取单选按钮value参数对应的值
    radVar.set(99)
    for col in range(3):
        # curRad = 'rad' + str(col)
        curRad = tk.Radiobutton(monty, text=colors[col], variable=radVar, value=col, command=radCall)    # 当该单选按钮被点击时,会触发参数command对应的函数
        curRad.grid(column=col, row=5, sticky=tk.W)     # 参数sticky对应的值参考复选框的解释
    
    # 滚动文本框
    scrolW = 30 # 设置文本框的长度
    scrolH = 3 # 设置文本框的高度
    
    scr = scrolledtext.ScrolledText(monty, width=scrolW, height=scrolH, wrap=tk.WORD)     # wrap=tk.WORD   这个值表示在行的末尾如果有一个单词跨行,会将该单词放到下一行显示,比如输入hello,he在第一行的行尾,llo在第二行的行首, 这时如果wrap=tk.WORD,则表示会将 hello 这个单词挪到下一行行首显示, wrap默认的值为tk.CHAR
    scr.grid(column=0, columnspan=3)        # columnspan 个人理解是将3列合并成一列   也可以通过 sticky=tk.W  来控制该文本框的对齐方式
    
    
    win.mainloop()      # 当调用mainloop()时,窗口才会显示出来
    

      

  • 相关阅读:
    封装、权限修饰符、包、构造器
    从Discuz!NT v2.0扣出来的生成静态页面的方法
    C#中struct与class的区别
    Asp.Net中虚拟文件系统的使用
    C#生成中文验证码
    C#导入Excel表
    IIS5、IIS6、IIS7的ASP.net 请求处理过程比较
    如何保证Session值不丢失
    C#抽象类与接口的区别
    C#实现DES加密解密
  • 原文地址:https://www.cnblogs.com/shiyongge/p/10820000.html
Copyright © 2011-2022 走看看