首页 > 编程语言 >在线设计Tkinter界面,生成Python代码,Tkinter布局助手,拖拽生成界面,tkinter designer,可视化生成代码

在线设计Tkinter界面,生成Python代码,Tkinter布局助手,拖拽生成界面,tkinter designer,可视化生成代码

时间:2023-04-27 18:46:23浏览次数:54  
标签:__ widget 界面 parent self 生成 tk Tkinter dic

设计地址:https://www.pytk.net/tkinter-helper/?

 运行演示

 

 

教程地址:https://www.pytk.net/tkinter.html

 

常用演示

"""
本代码由[Tkinter布局助手]生成
当前版本:3.2.4
官网:https://www.pytk.net/tkinter-helper
QQ交流群:788392508
"""
from tkinter import messagebox
from tkinter import *
from tkinter.ttk import *
from typing import Dict


class WinGUI(Tk):
    widget_dic: Dict[str, Widget] = {}


    def __init__(self):
        super().__init__()

        self.v1 = BooleanVar()
        self.v2 = BooleanVar()
        self.v3 = BooleanVar()

        self.__win()
        self.widget_dic["tk_button_userBtn"] = self.__tk_button_userBtn(self)
        self.widget_dic["tk_input_user"] = self.__tk_input_user(self)
        self.widget_dic["tk_button_pwdBtn"] = self.__tk_button_pwdBtn(self)
        self.widget_dic["tk_input_pwd"] = self.__tk_input_pwd(self)
        self.widget_dic["tk_radio_button_l1"] = self.__tk_radio_button_l1(self)
        self.widget_dic["tk_radio_button_l2"] = self.__tk_radio_button_l2(self)
        self.widget_dic["tk_radio_button_l3"] = self.__tk_radio_button_l3(self)
        self.widget_dic["tk_check_button_ball1"] = self.__tk_check_button_ball1(self)
        self.widget_dic["tk_check_button_ball2"] = self.__tk_check_button_ball2(self)
        self.widget_dic["tk_check_button_ball3"] = self.__tk_check_button_ball3(self)
        self.widget_dic["tk_list_box_list"] = self.__tk_list_box_list(self)
        self.widget_dic["tk_select_box_choice"] = self.__tk_select_box_choice(self)
        self.widget_dic["tk_frame_lgypbziv"] = self.__tk_frame_lgypbziv(self)
        self.widget_dic["tk_table_table"] = self.__tk_table_table(self)



    def __win(self):
        self.title("Tkinter布局助手")
        # 设置窗口大小、居中
        width = 677
        height = 435
        screenwidth = self.winfo_screenwidth()
        screenheight = self.winfo_screenheight()
        geometry = '%dx%d+%d+%d' % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
        self.geometry(geometry)
        self.resizable(width=False, height=False)

        # 自动隐藏滚动条

    def scrollbar_autohide(self, bar, widget):
        self.__scrollbar_hide(bar, widget)
        widget.bind("<Enter>", lambda e: self.__scrollbar_show(bar, widget))
        bar.bind("<Enter>", lambda e: self.__scrollbar_show(bar, widget))
        widget.bind("<Leave>", lambda e: self.__scrollbar_hide(bar, widget))
        bar.bind("<Leave>", lambda e: self.__scrollbar_hide(bar, widget))

    def __scrollbar_show(self, bar, widget):
        bar.lift(widget)

    def __scrollbar_hide(self, bar, widget):
        bar.lower(widget)

    def __tk_button_userBtn(self, parent):
        btn = Button(parent, text="用户名")
        btn.place(x=60, y=60, width=98, height=30)
        return btn

    def __tk_input_user(self, parent):
        ipt = Entry(parent)
        ipt.place(x=180, y=60, width=198, height=30)
        return ipt

    def __tk_button_pwdBtn(self, parent):
        btn = Button(parent, text="密码")
        btn.place(x=60, y=110, width=100, height=30)
        return btn

    def __tk_input_pwd(self, parent):
        ipt = Entry(parent)
        ipt.place(x=180, y=110, width=197, height=30)
        return ipt

    def __tk_radio_button_l1(self, parent):
        rb = Radiobutton(parent, text="男",value=1)
        rb.place(x=60, y=190, width=80, height=30)
        return rb

    def __tk_radio_button_l2(self, parent):
        rb = Radiobutton(parent, text="女",value=2)
        rb.place(x=180, y=190, width=80, height=30)
        return rb

    def __tk_radio_button_l3(self, parent):
        rb = Radiobutton(parent, text="未知",value=3)
        rb.place(x=300, y=190, width=80, height=30)
        return rb

    def __tk_check_button_ball1(self, parent):
        cb = Checkbutton(parent, text="篮球",variable=self.v1)
        cb.place(x=60, y=250, width=80, height=30)
        return cb

    def __tk_check_button_ball2(self, parent):
        cb = Checkbutton(parent, text="排球",variable=self.v2)
        cb.place(x=180, y=250, width=80, height=30)
        return cb

    def __tk_check_button_ball3(self, parent):
        cb = Checkbutton(parent, text="足球",variable=self.v3)
        cb.place(x=300, y=250, width=80, height=30)
        return cb

    def __tk_list_box_list(self, parent):
        lb = Listbox(parent)
        lb.insert(END, "编程语言")
        lb.insert(END, "Python")
        lb.insert(END, "Tkinter Helper")
        lb.insert(END, "java")
        lb.place(x=60, y=310, width=150, height=100)


        return lb

    def __tk_select_box_choice(self, parent):
        cb = Combobox(parent, state="readonly")
        cb['values'] = ("列表框", "Python", "Tkinter Helper")
        cb.place(x=230, y=310, width=150, height=30)
        return cb

    def __tk_table_table(self, parent):
        # 表头字段 表头宽度
        columns = {"ID": 44, "姓名": 44, "性别": 44}
        # 初始化表格 表格是基于Treeview,tkinter本身没有表格。show="headings" 为隐藏首列。
        tk_table = Treeview(parent, show="headings", columns=list(columns))
        for text, width in columns.items():  # 批量设置列属性
            tk_table.heading(text, text=text, anchor='center')
            tk_table.column(text, anchor='center', width=width, stretch=False)  # stretch 不自动拉伸

        tk_table.place(x=220, y=350, width=442, height=70)

        return tk_table

    def __tk_frame_lgypbziv(self, parent):
        frame = Frame(parent)
        frame.place(x=420, y=60, width=245, height=202)

        self.widget_dic["tk_label_sex"] = self.__tk_label_sex(frame)
        self.widget_dic["tk_label_class"] = self.__tk_label_class(frame)
        self.widget_dic["tk_text_textArea"] = self.__tk_text_textArea(frame)
        return frame

    def __tk_label_sex(self, parent):
        label = Label(parent, text="性别:", anchor="center")
        label.place(x=20, y=20, width=50, height=30)
        return label

    def __tk_label_class(self, parent):
        label = Label(parent, text="班级:", anchor="center")
        label.place(x=20, y=70, width=50, height=30)
        return label

    def __tk_text_textArea(self, parent):
        text = Text(parent)
        text.place(x=80, y=20, width=150, height=161)

        return text


class Win(WinGUI):
    def __init__(self):
        super().__init__()
        self.__event_bind()

    def user(self, evt):
        print("<Button>事件未处理", evt)
        print("输入文本框内容:", self.widget_dic.get("tk_text_textArea").get("1.0", "end-1c"))

    def pwd(self, evt):
        print("<Button>事件未处理", evt)
        print(self.v1.get())
        print(self.v2.get())
        print(self.v3.get())
        print("输入:", self.widget_dic.get("tk_input_pwd").get())
        messagebox.showerror("提示", message="密码错误")

    def boxSelect(self, evt):
        print("<<ListboxSelect>>事件未处理", evt)
        print(self.widget_dic["tk_list_box_list"].curselection())
        print(self.widget_dic["tk_list_box_list"].get(self.widget_dic["tk_list_box_list"].curselection()))
        print(self.widget_dic["tk_list_box_list"].get(1))


    def __event_bind(self):
        self.widget_dic["tk_button_userBtn"].bind('<Button>', self.user)
        self.widget_dic["tk_button_pwdBtn"].bind('<Button>', self.pwd)
        self.widget_dic["tk_list_box_list"].bind('<<ListboxSelect>>', self.boxSelect)


if __name__ == "__main__":
    win = Win()
    win.mainloop()

一个界面类WinGUI,界面代码存到  widget_dic 字典中,事件类Win处理事件。上述代码效果如下

 

 

测试界面设计:

界面文件:https://nsyw.lanzoue.com/i79kr0u38tef

布局助手插件win64位(下载后运行一下,方便在线预览):https://nsyw.lanzoue.com/i79kr0u38tef

标签:__,widget,界面,parent,self,生成,tk,Tkinter,dic
From: https://www.cnblogs.com/zwnsyw/p/17359931.html

相关文章

  • c# winform 用代码生成一张只有一个像素点的图片,保存到硬盘里或者显示到panel里...
    只生成图片stringnullPath="C:\\黑色头发.jpg";Bitmapb=newBitmap(1,1);b.Save(nullPath);b.Dispose();生成图片并显示到panel里Bitmapb=newBitmap(this.panel1.Width,this.panel1.Height);this.panel1.DrawToBitmap(b,newRectangle(0......
  • electron 配置mac安装的图标, 生成.icns文件
    electron配置mac安装的图标使用的icon.icns准备一张1024*1024的png图片1.在项目根目录中创建文件()mkdirtmp.iconset2.生成多个比例不同的图片sips-z1616logo.png--outtmp.iconset/icon_16x16.pngsips-z3232logo.png--outtmp.iconset/icon_16x16@2x......
  • highchart 生成一个3d的柱状图
    highchart生成一个光秃秃的柱状图Highcharts.chart('container',{chart:{type:'column',margin:0,options3d:{enabled:true,alpha:15,//控制x轴角度beta:15,//控制y轴角度depth:50,//柱子深度viewDistance......
  • MSTP-多实例生成树
    RSTP与STP的缺点同一局域网内所有的vlan共享一个生成树,无法在vlan间实现数据流量的负载均衡;链路利用率低,被阻塞的冗余链路不承载任何流量,造成了带宽的浪费,还可能造成部分vlan报文无法转发。MSTP:MSTP兼容STP和RSTP,既可以快速收敛,又能使不同VLAN的流量沿各自的路径转发,从而为冗......
  • .NET使用一行命令轻松生成EF Core项目框架
    dotnetef是EntityFrameworkCore(EFCore)的一个命令行工具,用于管理EFCore应用程序的数据库和代码。除了提供管理数据库的命令之外,dotnetef还可以生成和管理实体和上下文代码。本文将介绍如何使用dotnetef动态生成代码。一、环境准备1、项目准备用vs2022新建一个.NET6的asp.......
  • 前端生成二维码及把页面转为图片保存到本地
    前端生成二维码及把页面转为图片保存到本地Bayi·于2021-12-2317:08:37发布847收藏3文章标签:前端javascript生成二维码页面转图片vue版权以vue项目为例,其他类型项目其实也是一样的所需components:QRCodehtml2canvasnpminstallqrcodejs2--savenpm......
  • vue 前端生成二维码,并转换为图片
    vue前端生成二维码,并转换为图片~牧马~于2021-05-2715:08:03发布2760收藏7分类专栏:vue文章标签:vue生成二维码自动生成的二维码转图片版权这篇文章主要是分享下自己的收获,也是自己遇到的问题:前端如何自己生成二维码?前端如何将生成的二维码转成图片并展示?......
  • License授权文件生成器源码
    功能介绍1.对销售后的软件或网站执行版权控制,防止被非法另行出售;2.对网站域名进行有效的管理监控,防止非法域名或未授权域名;3.防止黑客使用极端手段获取网站或程序原文件后非法部署;系统功能:1.完整版Lisence生成工具。2.对网站使用域名执行控制。3.对网站域名使用时间执行授权控制......
  • Java自定义生成证书图片
    1、引入依赖<!--cmyk格式图片转换--><dependency><groupId>org.sejda.imageio</groupId><artifactId>webp-imageio</artifactId><version>0.1.6</version></dependen......
  • 推荐两个AI神器:ChatGPT只需1个标题,2分钟全自动生成PPT!
    今天给大家分享两个工具,帮助你全自动生成PPT,接下来以自动化测试为主题,教大家如何2分钟生成好PPT。1、第一个工具:ChatGPT1、打开ChatGPT页面,输入prompt,告诉它,让它帮你生成一份自动化测试为主题的PPT,如:帮我生成一个自动化测试为主题的PPT,内容不少于10页,用markdown格式生成2、......