【问题标题】:Tkinter button displays center under a ttk.textTkinter 按钮在 ttk.text 下显示中心
【发布时间】:2021-01-14 13:11:56
【问题描述】:

我有一个我正在为自己创建的小记事本。 但是,在“故障排除步骤”部分,我有一个 TTK.text,它占据了一个宽列。现在我需要在下面添加两个按钮。 “保存”和“清除” “保存”按钮显示在文本框下方的中心。 (预期)但是当我尝试在“保存”旁边添加“清除”时,它会以与右侧不同的列方式显示。

这是下面的代码。

from tkinter import *
from tkinter import ttk
from tkinter import Text

class Example(Frame):

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

        self.initUI()
        


    def initUI(self):

        self.master.title("Inbound Mail")
        self.pack(fill=BOTH, expand=True)

        frame = LabelFrame(self, text = "CUSTOMER INFORMTION ")
        frame.grid(row =0, column = 0, pady = 20, padx = 10)

        case_number = Label(frame, text = "Case Number ")
        case_number.grid(row = 0, column = 0, pady = 3, padx = 3)

        self.case_entry = Entry(frame, width  = 30)
        self.case_entry.grid(row = 0, column = 1, pady = 5)


        customer_name = Label(frame, text = "Contact Name ")
        customer_name.grid(row =1, column = 0, pady = 3, padx = 3)

        self.name_entry = Entry(frame, width  = 30)
        self.name_entry.grid(row = 1, column = 1)



        customer_phone = Label(frame, text = "Phone Number ")
        customer_phone.grid(row =2, column = 0, pady = 3, padx = 3)

        self.phone_entry = Entry(frame, width  = 30)
        self.phone_entry.grid(row = 2, column = 1)

        customer_email = Label(frame, text = "Email Address ")
        customer_email.grid(row =3, column = 0, pady = 3, padx = 3)

        self.email_entry = Entry(frame, width  = 30)
        self.email_entry.grid(row = 3, column = 1)


        Label(frame, text = "Product").grid(row = 4, column = 0, pady = 3, padx = 3)
        self.product = ttk.Combobox(frame, 
                                values = [
                                        "1",
                                        "2",
                                        "3",
                                        "4",
                                        "5",
                                        "6",
                                        "7",
                                        "8"], width = 27)
        self.product.grid(row = 4, column = 1, pady = 3, padx = 3)
        self.product.current(0)


        #ISSUE DESCRIPTION 

        frame2  = LabelFrame(self, text = "ISSUE")
        frame2.grid(row = 5 , column = 0, pady = 20, padx = 10)
    
        Label(frame2, text = "ISSUE DESCRIPTION").grid(row = 6, column = 0, pady = 3, padx = 3)
        self.issue = Entry(frame2, width = 55)
        self.issue.grid(row = 7, column = 0, pady = 3, padx = 3)


        # TROUBLESHOOTING STEPS

        frame3 = LabelFrame(self, text = "TROUBLESHOOTING STEPS")
        frame3.grid(row = 8, column = 0)

        self.troubles = Text(frame3, height = 15, width = 40, wrap = WORD)
        self.troubles.grid(row = 9, column = 0,padx = 10, pady = 10)

        #SCROLLBAR FOR TEXT

        scroll = Scrollbar(self, command = self.troubles.yview)
        scroll.grid(row = 8, column = 1, sticky = "nsew")
        self.troubles.config(yscrollcommand = scroll.set)

        #SAVE BUTTON AND CLEAR BUTTON. 

        self.save = Button(frame3, text = "Save")
        self.save.grid(row = 10, column = 0)

def main():

    root = Tk()
    app = Example()
    root.geometry("380x650")
    # root.resizable(False, False)
    root.mainloop()


if __name__ == '__main__':
    main()

【问题讨论】:

    标签: python-3.x user-interface button tkinter tkinter-layout


    【解决方案1】:

    制作另一个小框架作为按钮的容器。您可能还想知道滚动文本小部件是标准 tkinter 的一部分,您不必重新发明它。只需添加此导入:

    from tkinter.scrolledtext import ScrolledText
    

    然后:

    # TROUBLESHOOTING STEPS
    
    frame3 = LabelFrame(self, text = "TROUBLESHOOTING STEPS")
    frame3.grid(row = 8, column = 0)
    
    self.troubles = ScrolledText(frame3, height = 15, width = 40, wrap = WORD)
    self.troubles.grid(row = 9, column = 0,padx = 10, pady = 10)
    
    #SAVE BUTTON AND CLEAR BUTTON.
    buttonframe = Frame(frame3)
    buttonframe.grid(row = 10, column = 0)
    self.save = Button(buttonframe, text = "Save")
    self.save.pack(side=LEFT)
    self.clear = Button(buttonframe, text = "Clear")
    self.clear.pack(side=LEFT)
    

    【讨论】:

    • 你成就了我的一天。我从来没有想过我可以同时使用 Pack 和 grid :-D 非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2022-01-02
    • 2022-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    相关资源
    最近更新 更多