python中使用tkinter的文本输入框的注意事项(python GUI项目)

1、在使用一个 StringVar变量接受输入信息时,  程序不报错,但是无法将输入文本框的内容进行输出,需要在Entry的标签中使用关键字textvariable与StringVar变量进行关联。其中testvariable接受的是变量的属性并不是变量名称。所以可以使用getattr()函数进行变量属性的读取。

getattr()函数的使用如下:

getattr(object, name[, default])

其中,参数含义如下:

  • object:表示一个对象,可以是一个模块、类、实例等等。
  • name:一个字符串,表示对象的属性名或者方法名。
  • default(可选):如果属性或方法不可用时返回的值,如果不提供默认值,那么将会抛出 AttributeError 异常。

2、setattr()函数的使用:

setattr(object, name, value)

其中,参数含义如下:

  • object:表示一个对象,可以是一个模块、类、实例等等。
  • name:一个字符串,表示对象的属性名。
  • value:表示对象的属性值。

setattr()函数的好处在于可以将一些类似的操作,通过循环时程序更加简便。

具体实例:

import tkinter
import tkinter.messagebox
import tkinter.simpledialog

class UserInterface:
    def __init__(self):
        """定义计算公式中涉及到的参数,并将其初始化"""
        self.ti=None#初定降雨历时
        self.p=None
        self.A1=None
        self.a=None
        self.b=None
        self.c=None
        self.n=None
        self.q=None
        self.qa=None
        self.F1i=None
        self.F2i=None
        self.m1i=None

    def  EntryLine(self,parameter_name,window_name,parameter_describe,i):
        x=0.1
        spacing=0.06*(i+1)
        tkinter.Label(window_name, text=parameter_describe, font=24).place(relx=x, rely=spacing)
        tkinter.Entry(window_name, textvariable=getattr(self,parameter_name)).place(relx=x+0.35, rely=spacing)

    def InformationEntry(self):
        """定义一个图形化界面,实现对应参数的输入,并将其保存到对应的变量中"""
        root = tkinter.Tk()
        root.title("工程问题计算")
        root.geometry("600x700+100+100")
        parameter_list = ['ti', 'p', 'A1', 'a', 'b', 'c', 'n', 'q', 'qa', 'F1i', 'F2i', 'm1i']
        parameter_describe=['初定降雨历时','重现期','参数A1', '参数a', '参数b', '参数c', '参数n', '降雨强度q', '降雨强度qa', '道面汇水面积F1i', '土面汇水面积F2i', '道面地表粗糙系数m1i']
        for i in range(len(parameter_list)):
            setattr(self, parameter_list[i], tkinter.StringVar())  # 用setattr给每个实体对象的赋予属性
            self.EntryLine(parameter_list[i],root,parameter_describe[i],i)
        root.mainloop()
        print('初定降雨历时:',self.ti.get())

userinterface=UserInterface()
userinterface.InformationEntry()

你可能感兴趣的:(python,GUI,图形化界面,python)