前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python 动态GUI表单生成器 脚本***

python 动态GUI表单生成器 脚本***

作者头像
用户5760343
发布2022-05-13 10:07:54
6190
发布2022-05-13 10:07:54
举报
文章被收录于专栏:sktj

""" ################################################################## a reusable form class, used by getfilegui (and others) ################################################################## """

from tkinter import * entrysize = 40

class Form: # add non-modal form box def init(self, labels, parent=None): # pass field labels list labelsize = max(len(x) for x in labels) + 2 box = Frame(parent) # box has rows, buttons box.pack(expand=YES, fill=X) # rows has row frames rows = Frame(box, bd=2, relief=GROOVE) # go=button or return key rows.pack(side=TOP, expand=YES, fill=X) # runs onSubmit method self.content = {} for label in labels: row = Frame(rows) row.pack(fill=X) Label(row, text=label, width=labelsize).pack(side=LEFT) entry = Entry(row, width=entrysize) entry.pack(side=RIGHT, expand=YES, fill=X) self.content[label] = entry Button(box, text='Cancel', command=self.onCancel).pack(side=RIGHT) Button(box, text='Submit', command=self.onSubmit).pack(side=RIGHT) box.master.bind('<Return>', (lambda event: self.onSubmit()))

代码语言:javascript
复制
def onSubmit(self):                                      # override this
    for key in self.content:                             # user inputs in
        print(key, '\t=>\t', self.content[key].get())    # self.content[k]

def onCancel(self):                                      # override if need
    Tk().quit()                                          # default is exit

class DynamicForm(Form): def init(self, labels=None): labels = input('Enter field names: ').split() Form.init(self, labels) def onSubmit(self): print('Field values...') Form.onSubmit(self) self.onCancel()

if name == 'main': import sys if len(sys.argv) == 1: Form(['Name', 'Age', 'Job']) # precoded fields, stay after submit else: DynamicForm() # input fields, go away after submit mainloop()

image.png

使用

from form import Form from tkinter import Tk, mainloop from tkinter.messagebox import showinfo import getfile, os

class GetfileForm(Form): def init(self, oneshot=False): root = Tk() root.title('getfilegui') labels = ['Server Name', 'Port Number', 'File Name', 'Local Dir?'] Form.init(self, labels, root) self.oneshot = oneshot

代码语言:javascript
复制
def onSubmit(self):
    Form.onSubmit(self)
    localdir   = self.content['Local Dir?'].get()
    portnumber = self.content['Port Number'].get()
    servername = self.content['Server Name'].get()
    filename   = self.content['File Name'].get()
    if localdir:
        os.chdir(localdir)
    portnumber = int(portnumber)
    getfile.client(servername, portnumber, filename)
    showinfo('getfilegui', 'Download complete')
    if self.oneshot: Tk().quit()  # else stay in last localdir

if name == 'main': GetfileForm() mainloop()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档