python tkinter控件布局项目实例

 更新时间:2019年11月04日 09:54:26   作者:changfan  
这篇文章主要介绍了python tkinter控件布局项目实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了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()

执行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python表格数据处理库之tablib库详解

    Python表格数据处理库之tablib库详解

    这篇文章主要介绍了Python表格数据处理库之tablib库详解,Tablib是一个用于处理电子表格数据的Python库,它可以轻松地进行数据的导入和导出,以及数据格式的转换,需要的朋友可以参考下
    2023-08-08
  • 使用python matplotlib画折线图实例代码

    使用python matplotlib画折线图实例代码

    Matplotlib是一个Python工具箱,用于科学计算的数据可视化,下面这篇文章主要给大家介绍了关于如何使用python matplotlib画折线图的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Python中实现两个字典(dict)合并的方法

    Python中实现两个字典(dict)合并的方法

    这篇文章主要介绍了Python中实现两个字典(dict)合并的方法,是Python程序设计中非常实用的技巧,需要的朋友可以参考下
    2014-09-09
  • Python装饰器用法示例小结

    Python装饰器用法示例小结

    这篇文章主要介绍了Python装饰器用法,结合实例形式总结分析了Python装饰器的简单使用方法与操作注意事项,需要的朋友可以参考下
    2018-02-02
  • Java编程迭代地删除文件夹及其下的所有文件实例

    Java编程迭代地删除文件夹及其下的所有文件实例

    这篇文章主要介绍了Java编程迭代地删除文件夹及其下的所有文件实例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • python爬虫scrapy框架之增量式爬虫的示例代码

    python爬虫scrapy框架之增量式爬虫的示例代码

    这篇文章主要介绍了python爬虫scrapy框架之增量式爬虫的示例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • 用python对oracle进行简单性能测试

    用python对oracle进行简单性能测试

    这篇文章主要介绍了用python对oracle进行简单性能测试的示例,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12
  • Python通过文本和图片生成词云图

    Python通过文本和图片生成词云图

    这篇文章主要介绍了Python通过文本和图片生成词云图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python Pandas聚合函数的应用示例

    Python Pandas聚合函数的应用示例

    Pandas是当前Python数据分析中最为重要的工具,其提供了功能强大且灵活多样的API,可以满足使用者在数据分析和处理中的多种选择和实现方式,下面这篇文章主要给大家介绍了关于Python Pandas聚合函数的相关资料,需要的朋友可以参考下
    2022-07-07
  • 解决paramiko执行命令超时的问题

    解决paramiko执行命令超时的问题

    这篇文章主要介绍了解决paramiko执行命令超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04

最新评论