pythontkinter控件与布局项目实战(代码片段)

changfan changfan     2022-12-09     576

关键词:

代码部分:

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()

执行结果:

技术图片

 

android实战学习了多个控件实现登录及记住密码功能

首先确定一下需要的控件:两个EditText:用于输入账号和密码一个button:用于登录查看账号和密码是否正确一个checkbox:用于记住密码和账户一个Androidstudio:用于编写代码,当然牛逼的人也推荐使用记事本写代码,废话不多说开工... 查看详情

ios项目开发实战——学会使用tableview列表控件plist读取与section显示

...据存储到plist文件里。然后在程序中进行读取。在TableView控件中依据不同的类别显示Section。有关TableView的其它实现,请參考《iOS项目开发实战——学会使用TableView列表控件(一)》《iOS项目开发实战——学会使用TableView列表控件... 查看详情

python小白从零开始pyqt5项目实战窗口切换的堆叠布局(代码片段)

...种不同的图形界面,以适应不同的任务场景。选项卡控件(QTackedWidget)通过标签选择打开对 查看详情

vue项目实战8登录与退出功能开发准备(代码片段)

...来准备开发登录与退出功能的前置工作。一、登录的页面布局整个登录页面是通过Element-UI组件实现的布局:在页面正中间有一个div,div的头部区有一个头像,div的中间有登录账号和登录密码,在div的底部有登录和... 查看详情

opencv-pyqt项目实战项目案例02滚动条应用(代码片段)

...实战(6)项目案例02:滚动条应用1.调节输入控件1.1输入控件1.2水平/垂直滚动条(QScrollBar)1.3水平/垂直滑动槽(QSlider)1.4旋转调节盘(QDial)1.5其它输入调节控件2.项目实战:使用滑动槽&#x... 查看详情

opencv-pyqt项目实战项目案例02滚动条应用(代码片段)

...实战(6)项目案例02:滚动条应用1.调节输入控件1.1输入控件1.2水平/垂直滚动条(QScrollBar)1.3水平/垂直滑动槽(QSlider)1.4旋转调节盘(QDial)1.5其它输入调节控件2.项目实战:使用滑动槽&#x... 查看详情

vue项目实战9创建登录组件并绘制布局(代码片段)

接上篇《8、登录与退出功能开发准备(二)》上一篇讲解了登录模块的开发的前置准备工作,本篇来正式开发登录模块。一、创建登录组件并渲染下面我们创建一个根组件,并将根组件渲染到App根组件中。打开vsc... 查看详情

opencv-pyqt项目实战项目案例01图像模糊(代码片段)

...nu)3.3创建工具栏对象(menu)3.4创建内容显示控件(Label)3.5创建按钮控件(PushButton)4.项目主程序的开发4.1打开图像文件子程序4.2保存图像文件子程序4.3OpenCV图像文件转换为QImage子程序4.4帮助菜单子... 查看详情

第31章项目实战-pc端固定布局9

第31章项目实战-PC端固定布局[8]学习要点:1.资讯内容2.代码详解本章主要开始使用学习用HTML5和CSS3来构建Web页面,第一个项目采用PC端固定布局来实现。一.资讯内容和首页一样,只不过这里,布局方式有所不同,具体如下:二... 查看详情

opencv-pyqt项目实战信号与槽机制(代码片段)

...与槽的连接:不同的发送者与接收者,槽函数为控件的内置函数2.2信号与槽的连接:不同的发送者与接收者,槽函数为自 查看详情

第31章项目实战-pc端固定布局10

第31章项目实战-PC端固定布局[10]学习要点:1.机票预定2.代码详解本章主要开始使用学习用HTML5和CSS3来构建Web页面,第一个项目采用PC端固定布局来实现。一.机票预定机票预定页面,具体如下:二.代码详解//全部代码<formactio... 查看详情

wpf项目版本控制以及布局控件

参考技术AWPF总结使用场景:画板Border最基础的装饰控件主要属性配置:CornerRadius设置圆角使用场景:绘制边线以及背景色圆角使用频繁扩展布局控件TabControlTabItemTabPanelToolbarPanelToolbarOverflowPanelVirtualizingStackPanel(虚拟化的StackPanel... 查看详情

python小白从零开始pyqt5项目实战基本控件(代码片段)

...代码,不省略一个例图。PyQt5提供了丰富的输入输出控件。本文介绍通过QtDesigner工具栏创建常用的基本控件,包括各种按钮控件、文本输入控件和调节输入控件。欢迎关 查看详情

python小白从零开始pyqt5项目实战基本控件(代码片段)

...代码,不省略一个例图。PyQt5提供了丰富的输入输出控件。本文介绍通过QtDesigner工具栏创建常用的基本控件,包括各种按钮控件、文本输入控件和调节输入控件。欢迎关 查看详情

opencv-pyqt项目实战信号与槽机制(代码片段)

...与槽的连接:不同的发送者与接收者,槽函数为控件的内置函数2.2信号与槽的连接:不同的发送者与接收者,槽函数为自定义函数2.3信号与槽的连接:相同的发送者与接收者,槽函数为控件的内置函数2.4信... 查看详情

python小白从零开始pyqt5项目实战汇总篇(完整例程)(代码片段)

...置开始,介绍了基本应用:菜单和工具栏、基本控件,核心机制:信号与槽连接、高级应用:布局管理、窗口切换和折叠侧边栏ÿ 查看详情

python小白从零开始pyqt5项目实战汇总篇(完整例程)(代码片段)

...置开始,介绍了基本应用:菜单和工具栏、基本控件,核心机制:信号与槽连接、高级应用:布局管理、窗口切换和折叠侧边栏ÿ 查看详情

androidstudio基础项目-布局xml设置的实战-全屏显示登录界面,去除按钮深颜色(代码片段)

AndroidStudio基础项目-布局XML设置的实战-全屏显示登录界面,去除按钮深颜色项目目标如下:第一步:新建项目使用空白Activity,默认项去除按钮的背景为深颜色只要将res/values/themes.xml中的Theme.MaterialComponents.DayNight.DarkActionBar改为Th... 查看详情