龙听期货论坛's Archiver

龙听 发表于 2024-3-30 21:32

Python的标准GUI库Tkinter开发基础 - 使用文本框控件

在Tkinter库的控件中,文本框控件主要用来实现信息接收和用户的信息输入功能。在 Python 程序中,使用tkinter.Entry与tkinter.Text可以创建单行文本框和多行文本框组件。通过向文本框控件传递属性参数可以设置文本框的背景色、大小、状态等。表4-4所示了tkinter.Entry和tkinter.Text所共有的几个属性控制参数。

表4-4 tkinter.Entry和tkinter.Text所共有的属性控制参数

[img]http://p.algo2.net/2024/0330/219a7615fa0c3.png[/img]

实例文件wen.py演示了使用Tkinter在窗体中使用文本框控件的过程。[code]import tkinter #导入Tkinter模块
root = tkinter.Tk()#生成一个主窗口对象
entry1 = tkinter.Entry(root,#创建单行文本框1
show ='*',)#设置显示的文本是星号
entry1.pack()#将文本框添加到窗口中
entry2 = tkinter.Entry(root,#创建单行文本框2
show ='#',#设置显示的文本是井号
width =50)#设置文本框的宽度
entry2.pack()#将文本框添加到窗口中
entry3 = tkinter.Entry(root,#创建单行文本框3
bg ='red',#设置文本框的背景色
fg ='blue')#设置文本框的前景色
entry3.pack()#将文本框添加到窗口中
entry4 = tkinter.Entry(root,#创建单行文本框4
selectbackground ='red',#设置选中文本的背景色
selectforeground ='gray')#设置选中文本的前景色
entry4.pack()#将文本框添加到窗口中
entry5 = tkinter.Entry(root,#创建单行文本框5
state = tkinter.DISABLED)#禁用文本框
entry5.pack()#将文本框添加到窗口中
edit1 = tkinter.Text(root,#创建多行文本框
selectbackground ='red',#设置选中文本的背景色
selectforeground ='gray')
edit1.pack()#将文本框添加到窗口中
root.mainloop()#进入消息循环[/code]上述实例代码使用不同的属性参数实例化了6种文本框,执行后的效果如图4-5所示。

[img]http://p.algo2.net/2024/0330/bd262d6712117.png[/img]

执行文件wen.py后的效果

实例文件wen1.py演示了使用Tkinter在窗体中实现会员注册界面的过程。[code]from tkinter import*
classMainWindow:
def __init__(self):
self.frame =Tk()
self.label_name =Label(self.frame, text="name:")
self.label_age =Label(self.frame, text="age:")
self.label_sex =Label(self.frame, text="sex:")
self.text_name =Text(self.frame, height="1", width=30)
self.text_age =Text(self.frame, height="1", width=30)
self.text_sex =Text(self.frame, height="1", width=30)
self.label_name.grid(row=0, column=0)
self.label_age.grid(row=1, column=0)
self.label_sex.grid(row=2, column=0)
self.button_ok =Button(self.frame, text="ok", width=10)
self.button_cancel =Button(self.frame, text="cancel", width=10)
self.text_name.grid(row=0, column=1)
self.text_age.grid(row=1, column=1)
self.text_sex.grid(row=2, column=1)
self.button_ok.grid(row=3, column=0)
self.button_cancel.grid(row=3, column=1)
self.frame.mainloop()
frame =MainWindow()[/code]执行后的效果如图4-6所示。

[img]http://p.algo2.net/2024/0330/c2178dd0caa9f.png[/img]

龙听 发表于 2024-3-31 20:34

[img]http://p.algo2.net/2024/0331/126990d2027ec.png[/img][code]import tkinter

root = tkinter.Tk()

entry1 = tkinter.Entry(root,show='*')
entry1.pack()

entry2 = tkinter.Entry(root,show='#',width=50)
entry2.pack()

entry3 = tkinter.Entry(root,bg='red',fg='blue')
entry3.pack()

entry4 = tkinter.Entry(root,selectbackground='red',selectforeground='gray')
entry4.pack()

entry5 = tkinter.Entry(root,state=tkinter.DISABLED)
entry5.pack()

edit1 = tkinter.Text(root,selectbackground='red',selectforeground='gray')
edit1.pack()

root.mainloop()[/code]

龙听 发表于 2024-3-31 21:16

[img]http://p.algo2.net/2024/0331/e7261faea9822.png[/img][code]from tkinter import*

class MainWindow:
    def __init__(self):
         self.frame =Tk()
         self.label_name =Label(self.frame, text="name:")
         self.label_age =Label(self.frame, text="age:")
         self.label_sex =Label(self.frame, text="sex:")
         self.text_name =Text(self.frame, height="1", width=30)
         self.text_age =Text(self.frame, height="1", width=30)
         self.text_sex =Text(self.frame, height="1", width=30)
         self.label_name.grid(row=0, column=0)
         self.label_age.grid(row=1, column=0)
         self.label_sex.grid(row=2, column=0)
         self.button_ok =Button(self.frame, text="ok", width=10)
         self.button_cancel =Button(self.frame, text="cancel", width=10)
         self.text_name.grid(row=0, column=1)
         self.text_age.grid(row=1, column=1)
         self.text_sex.grid(row=2, column=1)
         self.button_ok.grid(row=3, column=0)
         self.button_cancel.grid(row=3, column=1)
         self.frame.mainloop()
frame =MainWindow()[/code]

页: [1]