python tkinter 控件与布局 项目实战

代码部分:

from tkinter import *
import tkinter.messagebox as messagebox

class Tkdemo():
    def __init__(self):
        master = Tk()
        master.title("missWjz")
        master.geometry(‘800x800‘)
        #创建菜单栏
        menubar = Menu(master)
        master.config(menu=menubar)

        #创建下拉菜单栏
        filemenu = Menu(menubar,tearoff=0)

        menubar.add_cascade(label="文件",menu=filemenu)
        filemenu.add_command(label="新建",command=self.newfile)
        filemenu.add_command(label="打开",command=self.openfile)
        filemenu.add_command(label="保存",command=self.savefile)
        #增加分割线
        filemenu.add_separator()
        filemenu.add_command(label="关闭填写",command=master.quit)

        #Label(文字)
        title = Label(master,text="这是一份Tkinter的问卷调查",font=15,bg=‘white‘,fg=‘red‘)
        title.pack()

        #Frame 将问题1放在frame_1中
        frame_1 = Frame(master)
        frame_1.pack(fill=X)

        #问题1
        label_1 = Label(frame_1,text="1、我们第一次见面的地方?")
        label_1.grid(row=1,column=0)

        #Entry 问题一的输入框
        self.name = StringVar()
        entryname = Entry(frame_1,textvariable=self.name)
        #通过grid方法定位
        entryname.grid(row=1,column=1)

        #Button 按钮
        getname = Button(frame_1,text="点击确认",command=self.getname)
        getname.grid(row=1,column=3)

        #Frame 将问题二放在frame_2中
        frame_2 = Frame(master)
        frame_2.pack(fill=X)

        #Label 问题二
        label_2 = Label(frame_2,text="2、我记得你生日")
        label_2.grid(row=1,column=0)

        #Radiobutton 选择按钮
        self.sex = StringVar()
        sex_male = Radiobutton(frame_2,text=‘记得‘,fg=‘blue‘,variable=self.sex,value=‘记得‘,command=self.getsex)
        sex_male.grid(row=1,column=2)
        sex_female = Radiobutton(frame_2,text=‘不可能‘,fg=‘red‘,variable=self.sex,value="不可能",command=self.getsex)
        sex_female.grid(row=1,column=4)

        #Frame 问题3 放在frame_3中
        frame_3 = Frame(master)
        frame_3.pack(fill=X)

        #Label 问题3
        label_3 = Label(frame_3,text="3、你对我的重要性:")
        label_3.grid(row=1,column=0)

        #Scale 滑动条
        self.age = Scale(frame_3,from_=0,to=100,orient=HORIZONTAL,resolution=1)
        self.age.grid(row=1,column=1)

        #Button 按钮
        getage = Button(frame_3,text=‘点我确认‘,command=self.getage)
        getage.grid(row=1,column=2)

        #问题4 置于 Frame_4 中
        frame_4 = Frame(master)
        frame_4.pack(fill=X)

        #问题四
        label_4 = Label(frame_4,text="4、去除一段过去:")
        label_4.grid(row=1,column=0)

        #列表
        self.listbox = Listbox(frame_4)
        self.listbox.grid(row=1,column=1)
        for item in ["第一次看电影","第一次拍照留影","第一次一起吃饭","第一次一起出去玩"]:
            self.listbox.insert(END,item)

        #s删除按钮
        DELE = Button(frame_4,text="删除",command=lambda listbox=self.listbox: listbox.delete(ANCHOR))
        DELE.grid(row=1,column=1)

        #确认按钮
        review = Button(frame_4,text=‘点我确认‘,command = self.review)
        review.grid(row=1,column=2)

        #问题五
        frame_5 = Frame(master)
        frame_5.pack(fill=X)

        label_5 = Label(frame_5,text=‘5、选择一个图案:‘)
        label_5.grid(row=1,column=0)
        self.canvas = Canvas(frame_5,width=200,height=200,bg=‘white‘)
        self.canvas.grid(row=1,column=1)

        self.pattern = StringVar()

        #图案选择按钮
        btn_first = Button(frame_5,text = "第一个",command =self.First_display)
        btn_second = Button(frame_5,text = "第二个",command =self.Second_dispaly)
        btn_third = Button(frame_5,text = "第三个",command =self.Third_display)
        btString = Button(frame_5, text="确定", command=self.displayString)
        btn_first.grid(row=2,column=2)
        btn_second.grid(row=2,column=3)
        btn_third.grid(row=2,column=4)
        btString.grid(row=2,column=5)

        #问题六 Frame_6
        frame_6 = Frame(master)
        frame_6.pack(fill=X)

        label_6 = Label(frame_6,text="6、在一起的天数:")
        label_6.grid(row=1,column=0)

        #(Spinbox)
        self.number = Spinbox(frame_6,from_=0,to=200)
        self.number.grid(row=1,column=1)

        #确定按钮
        number = Button(frame_6,text="确定",command=self.getnumber)
        number.grid(row=1,column=2)

        #问题7 frame_7
        frame_7 = Frame(master)
        frame_7.pack(fill=X)

        #问题
        label_7 = Label(frame_7,text="7、印象最深的一天:")
        label_7.grid(row=1,column=0)

        #滚轮
        scrollbar = Scrollbar(frame_7)
        scrollbar.grid(row=1,column=1)

        #列表
        self.listbox2 = Listbox(frame_7,height=5,yscrollcommand=scrollbar.set)
        for i in range(99):
            self.listbox2.insert(END,str(i))
        self.listbox2.grid(row=1,column=1)

        #确定按钮
        star = Button(frame_7,text="确定",command=self.getstar)
        star.grid(row=2,column=1)

        #问题8
        frame_8 = Frame(master)
        frame_8.pack(fill=X)

        self.agree = StringVar()
        #Checkbutton 勾选按钮
        agree = Checkbutton(frame_8,text="我确定此问卷信息准确无误",variable=self.agree,offvalue=‘不确定‘,command=self.getagree)
        agree.grid(row=1,column=1)

        #问题9 Frame_9
        frame_9 = Frame(master)
        frame_9.pack()
        submit = Button(frame_9,text="提交",command=self.allsubmit)
        submit.grid(row=1,column=1)

        #问题十
        frame_10 = Frame(master)
        frame_10.pack()
        #容器框
        self.group = LabelFrame(frame_10,text="特别鸣谢",padx=5,pady=5)
        self.group.grid()
        w = Label(self.group,text="本问卷由衷感谢:https://github.com/James95107/Tkinter/blob/master")
        w.pack()

        master.mainloop()

    def getname(self):
        name = self.name.get()
        print(name)

    def getsex(self):
        sex = self.sex.get()
        print(sex)

    def getage(self):
        print(self.age.get())

    def review(self):
        print(self.listbox.get(0, END))

    def getstar(self):
        print(self.listbox2.get(ACTIVE))

    def displayString(self):
        self.canvas.create_text(60, 40, text="您真棒!!!", font="Tine 10 bold underline", tags="string")
        print(self.pattern)

    def getnumber(self):
        print(self.getnumber())

    def getagree(self):
        print(self.agree.get())
    #打印心形
    def First_display(self):
        self.canvas.create_arc((5, 5, 85, 85),
                      width=2,
                      outline="red",
                      start=0,
                      extent=180,
                      style=ARC)

        self.canvas.create_arc((85, 5, 165, 85),
                      width=2,
                      outline="red",
                      start=0,
                      extent=180,
                      style=ARC)

        self.canvas.create_arc((5, -45, 165, 125),
                      width=2,
                      outline="red",
                      start=180,
                      extent=180,
                      style=ARC)
        self.pattern = ‘First‘
    #打印丘比特心形
    def Second_dispaly(self):
        self.canvas.create_line((0, 55, 200, 55),
                       width=2,
                       fill=‘red‘,
                       arrow=LAST,
                       arrowshape=(20, 40, 10)
                       )
        self.canvas.create_arc((5, 5, 85, 85),
                      width=2,
                      outline="red",
                      start=0,
                      extent=180,
                      style=ARC)

        self.canvas.create_arc((85, 5, 165, 85),
                      width=2,
                      outline="red",
                      start=0,
                      extent=180,
                      style=ARC)

        self.canvas.create_arc((5, -45, 165, 125),
                      width=2,
                      outline="red",
                      start=180,
                      extent=180,
                      style=ARC)
        self.pattern = ‘Second‘
    #打印爱心
    def Third_display(self):
        self.canvas.create_text((90, 70), text="武峻竹",
                       font=(‘微软雅黑‘, 20, ‘bold‘),
                       fill=‘red‘
                       )
        self.canvas.create_arc((5, 5, 85, 85),
                      width=2,
                      outline="red",
                      start=0,
                      extent=180,
                      style=ARC)

        self.canvas.create_arc((85, 5, 165, 85),
                      width=2,
                      outline="red",
                      start=0,
                      extent=180,
                      style=ARC)

        self.canvas.create_arc((5, -45, 165, 125),
                      width=2,
                      outline="red",
                      start=180,
                      extent=180,
                      style=ARC)
        self.pattern = ‘Third‘

    #属性
    #文件栏
    def newfile(self):
        self.file = open(r"wujunzhu.txt",‘w‘)
        self.file.close()
        messagebox.showinfo("创建文件","您已经成功创建个人资料文档")  #显示对话框

    def openfile(self):
        f = open(r"wujunzhu.txt",‘r‘)
        try:
            f_read = f.read()
            print(f_read)
        finally:
            f.close()

    def savefile(self):
        messagebox.showwarning("保存文件","提交即保存!")

    def allsubmit(self):
        with open(‘D:cpwords.txt‘,‘w‘,encoding=‘utf-8‘) as f:
            f.write(‘我们第一见面的地方是:‘)
            f.write(self.name.get())
            f.write(‘\n我记得你生日:‘)
            f.write(self.sex.get())
            f.write(‘\n你对我的重要性:‘)
            f.write(str(self.age.get()))
            f.write(‘\n要去除一段过去是:‘)
            for i in self.listbox.get(0, END):
                f.write(i)
                f.write(" ,")
            f.write(‘\n在一起的天数是:‘)
            f.write(self.number.get())
            f.write(‘\n印象最深的一天是:‘)
            f.write(self.listbox2.get(ACTIVE))
            f.write(‘\n‘)
            f.write(self.agree.get())
            f.write(‘本调查问卷的真实性‘)
        messagebox.showinfo(‘Success‘, ‘恭喜您已成功提交 ‘)   # 显示对话框

Tkdemo()

执行结果:

原文地址:https://www.cnblogs.com/changfan/p/10859474.html

时间: 2024-11-05 23:33:17

python tkinter 控件与布局 项目实战的相关文章

tkinter控件的布局方式

在tkinter中控件布局的方法主要有三种: (1)pack布局 (2)grid布局 (3)place布局 pack布局采用块的方式组织控件,pack(options,......),options参数可以选择:side.fill.padx/pady.anchor等.21-设置三个标签,使用pack方法布局. from tkinter import * win=Tk() label1=Label(win,text="擎天柱" ,bg="blue") label2=L

Python tkinter 控件更新信息

下面几个例子关于tkinter界面更新的,简单易懂,分享一下. 例子_1: 代码_1: from tkinter import Tk, Checkbutton, Label from tkinter import StringVar, IntVar root = Tk() text = StringVar() text.set('old') status = IntVar() def change(): if status.get() == 1: # if clicked text.set('n

Tkinter控件学习总结(一)

此部分总结只涉及基本UI布局.按钮点击回调.控件中用户输入内容的获取等,并不涉及键盘事件.鼠标事件的获取等等. (一)Tkinter的优缺点 Tkinter是Python自带的GUI库,它最好的一个优点就是不用另外装额外 的库拿来就可以用了,而且整个库很小巧,入门简单,这很适合于只想集中精力解决实际问题的人. 如果是作一些简单的界面,Tkinter已经足够胜任.不过对于我来说,它有个致命的缺点就是不支持对png格式文件的显示.其实使用python的image库是可以解析png格式文件的.但我拿一

Silverlight项目笔记1:UI控件与布局、MVVM、数据绑定、await/async、Linq查询、WCF RIA Services、序列化、委托与事件

最近从技术支持转到开发岗,做Silverlight部分的开发,用的Prism+MVVM,框架由同事搭好,目前做的主要是功能实现,用到了一些东西,侧重于如何使用,总结如下:   1.UI控件与布局     2.MVVM     3.数据绑定     4.await/async     5.Linq查询     6.WCF RIA Services     7.序列化     8.委托与事件 1.UI控件与布局 常用的主要是Grid.StackPanel.Border,其中最常用的的是Grid,是一

Android 手机卫士--自定义组合控件构件布局结构

由于设置中心条目中的布局都很类似,所以可以考虑使用自定义组合控件来简化实现 本文地址:http://www.cnblogs.com/wuyudong/p/5909043.html,转载请注明源地址. 自定义组合控件 1.将已经编写好的布局文件,抽取到一个类中去做管理,下次还需要使用此布局结构的时候,直接使用组合控件对应的对象. 2.将组合控件的布局,抽取到单独的一个xml中 新建布局文件:setting_item_view.xml,将上篇文章中布局文件中的代码放进去 <?xml version=

WPF 控件与布局

[控件到底是什么?] 程序的本质就是"数据+算法"------用户输入原始的数据,算法处理原始数据并得到结果数据.问题就在于程序如何将结果数据显示给用户.同样一组数据,你可以使用LED阵列显示出来,或者以命令行模式借助各种格式控制符(如TAB)对齐并输出,但这些都不如图形界面(GUI  Graphic User Interface)来的友好和方便.GUI的方便在于它对数据展示的直观性,程序员可以通过编程的方式将数据通过图形的方式展示出来,从而避免了用户面对一大堆复杂数据的痛苦.提高了工

Excel开发学习笔记:界面交互与控件的布局

除了业务逻辑之外,比较耗时耗力的就是人机交互了.在编写excel定制程序的过程中,这次用到了以下几种交互方式: 通过excel工作表(worksheet)获取用户输入 通过按钮控件触发功能代码执行 通过TreeView控件显示内容摘要及导航 通过自定义的windows窗体提供交互 工作表的操作放到后面再说,讲一下按钮控件button和Treeview控件的布局. 放置控件的方法: 无非可视化放置和运行时代码加载两种.可视化放置比较直观,通过visual studio的toolbox工具栏拖动需要

Android 通过代码改变控件的布局方式

在很多情况下当我们在xml中布局的方式并不能满足我们的要求,而这时我们就需要通过在代码中控制控件的布局根据不同的条件来控制布局.首先来了解一下安卓中的一些单位 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素.px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多.需要注意的是:当我们在XML布局

ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)

下面是目录其中ios文件夹包括了大部分ios控件的介绍和演示,swift的时完整版,可以学习完swift(这个看的是swift刚出来一周的视频截图,可能有点赶,但是完整),c语言和oc语言的也可以完整的学习完所需知识,,其他文件夹的内容如其名说描述一样 没张图片都有文字说明,可以需要该功能的时候搜索一下然后打开图片就可以学习到 网盘下载地址:需要的话给留言我再传上去 http://www.cnblogs.com/langtianya原创 ios学习笔记图片+图片解释(c语言 oc语言 ios控件