首页 > 解决方案 > Tkinter 标签配置动态

问题描述

我想要动态lable.config 有可能吗?因为结果不与屏幕尺寸固定,其余文本被截断并且看不到。这是代码。我知道我的代码无效,但我是初学者,我不知道也不知道关于 python 中的 GUI

def link_GUI(graph):
    def btn_click():
        data1 = str(txtDataEntry.get())  # get data from test box
        data2 = str(txtDataEntry2.get())
        r_edge = link(graph, data1, data2)
        lblResult.config(text="" + data1 + " and " + data2 + " are linked")
        lblResult2.config(text="" + str(r_edge))
    root = Tk()
    root.title("SSM Application")
    root.geometry("1500x600")
    lblTitle = Label(text=" Link a station to another station", font=('arial', 20, 'bold'), fg='Black')
    lblTitle.pack()
    lblTitle = Label(text=" *Close the box to choose another option*  ", font=('arial', 10, 'bold'), fg='Black')
    lblTitle.pack()
    frame1 = Frame()

    lblDataentry = Label(frame1, text="Enter first station name:", pady=1, fg='black')  # 1111111111111111
    lblDataentry.grid(row=0, column=0)
    txtDataEntry = Entry(frame1)  # 111111111111111
    txtDataEntry.grid(row=0, column=1)
    lblDataentry = Label(frame1, text="Enter second station name:", pady=1, fg='black')  # 2222222222222
    lblDataentry.grid(row=1, column=0)
    txtDataEntry2 = Entry(frame1)  # 222222222222222
    txtDataEntry2.grid(row=1, column=1)
    btnSubmit = Button(frame1, text="Link", bg='grey', fg='black', command=btn_click)
    btnSubmit.grid(row=2, column=1)
    frame1.pack()  # add frame to gui
    lblResult = Label(font=('arial', 18, 'bold'), fg='darkblue')
    lblResult.pack()
    lblResult2 = Label(font=('arial', 18, 'bold'), fg='darkblue')
    lblResult2.pack()
    root.mainloop()

原始输出结果1:https://i.stack.imgur.com/ErzL6.png

这是我尝试使用包裹长度后的结果,但它也无济于事还有其他方法吗?

https://i.stack.imgur.com/J3eBd.png

标签: pythontkinter

解决方案


  1. 更改root.geometry("1500x600")root.minsize(1500, 600)以让根窗口展开。

  2. 更改lblResult2.pack()lblResult2.pack(fill="both", expand=1), 以便lblResult2填充根窗口宽度并调整根窗口高度以显示其所有内容。

  3. 更改lblResult2.config(text=""+str(r_edge))lblResult2.config(text=str(r_edget), wraplength=lblResult2.winfo_width(), justify='left')以包装其内容以适合其宽度。

编辑: 另一个解决方案是使用Text小部件而不是Label

  1. 更改以下几行

    lblResult2 = Label(font=('arial', 18, 'bold'), fg='darkblue')
    lblResult2.pack()
    

    txtResult2 = Text(font=('arial', 18, 'bold'), fg='darkblue')
    txtResult2.pack(fill='both', expand=1)
    
  2. 更改以下行btn_click()

    lblResult2.config(text=""+str(r_edge))
    

    txtResult2.delete(1.0, 'end')
    txtResult2.insert('end', str(r_edge))
    

推荐阅读