gui上有多个文本框

时间:2014-08-05 13:53:33

标签: python tkinter

我是python tkinter的新手,我希望有一个3个文本框,每个文本框有4行,可以在一个GUI上打印文本。

我尝试了一个只创建一个包装到整个屏幕的文本框的代码。我还想将3个文本框编号为左侧的1,2,3作为标签。请帮我完成我的代码!

import tkinter as tki # Tkinter -> tkinter in Python3

class App(object):

    def __init__(self):
        self.root = tki.Tk()

    # create a Frame for the Text and Scrollbar
        txt_frm = tki.Frame(self.root, width=600, height=600)
        txt_frm.pack(fill="both", expand=True)
        # ensure a consistent GUI size
        txt_frm.grid_propagate(False)
        # implement stretchability
        txt_frm.grid_rowconfigure(0, weight=1)
        txt_frm.grid_columnconfigure(0, weight=1)

    # create a Text widget
        self.txt = tki.Text(txt_frm, borderwidth=3, relief="sunken")
        self.txt.config(font=("consolas", 12), undo=True, wrap='word')
        self.txt.grid(row=0, column=0, sticky="nsew", padx=2, pady=2)

    # create a Scrollbar and associate it with txt
        scrollb = tki.Scrollbar(txt_frm, command=self.txt.yview)
        scrollb.grid(row=0, column=1, sticky='nsew')
        self.txt['yscrollcommand'] = scrollb.set

app = App()
app.root.mainloop()

1 个答案:

答案 0 :(得分:1)

试试这个

import tkinter as tki # Tkinter -> tkinter in Python3

class App(object):

    def __init__(self,root):
        self.root = root

    # create a Frame for the Text and Scrollbar
        txt_frm = tki.Frame(self.root, width=600, height=400)
        txt_frm.pack(fill="both", expand=True)
        # ensure a consistent GUI size
        txt_frm.grid_propagate(False)

    # create first Text label, widget and scrollbar
        self.lbl1 = tki.Label(txt_frm, text="1")
        self.lbl1.grid(row=0,column=0,padx=2,pady=2)

        self.txt1 = tki.Text(txt_frm, borderwidth=3, relief="sunken", height=4,width=55)
        self.txt1.config(font=("consolas", 12), undo=True, wrap='word')
        self.txt1.grid(row=0, column=1, sticky="nsew", padx=2, pady=2)

        scrollb1 = tki.Scrollbar(txt_frm, command=self.txt1.yview)
        scrollb1.grid(row=0, column=2, sticky='nsew')
        self.txt1['yscrollcommand'] = scrollb1.set

    # create second Text label, widget and scrollbar
        self.lbl2 = tki.Label(txt_frm, text="2")
        self.lbl2.grid(row=1,column=0,padx=2,pady=2)

        self.txt2 = tki.Text(txt_frm, borderwidth=3, relief="sunken",height=4,width=55)
        self.txt2.config(font=("consolas", 12), undo=True, wrap='word')
        self.txt2.grid(row=1, column=1, sticky="nsew", padx=2, pady=2)

        scrollb2 = tki.Scrollbar(txt_frm, command=self.txt2.yview)
        scrollb2.grid(row=1, column=2, sticky='nsew')
        self.txt2['yscrollcommand'] = scrollb2.set

    # create third Text label, widget and scrollbar
        self.lbl3 = tki.Label(txt_frm, text="3")
        self.lbl3.grid(row=2,column=0,padx=2,pady=2)

        self.txt3 = tki.Text(txt_frm, borderwidth=3, relief="sunken",height=4,width=55)
        self.txt3.config(font=("consolas", 12), undo=True, wrap='word')
        self.txt3.grid(row=2, column=1, sticky="nsew", padx=2, pady=2)

        scrollb3 = tki.Scrollbar(txt_frm, command=self.txt3.yview)
        scrollb3.grid(row=2, column=2, sticky='nsew')
        self.txt3['yscrollcommand'] = scrollb3.set

root = tki.Tk()
app = App(root)
root.mainloop()