python - 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
这是我尝试使用包裹长度后的结果,但它也无济于事还有其他方法吗?
解决方案
更改
root.geometry("1500x600")
为root.minsize(1500, 600)
以让根窗口展开。更改
lblResult2.pack()
为lblResult2.pack(fill="both", expand=1)
, 以便lblResult2
填充根窗口宽度并调整根窗口高度以显示其所有内容。更改
lblResult2.config(text=""+str(r_edge))
为lblResult2.config(text=str(r_edget), wraplength=lblResult2.winfo_width(), justify='left')
以包装其内容以适合其宽度。
编辑: 另一个解决方案是使用Text
小部件而不是Label
:
更改以下几行
lblResult2 = Label(font=('arial', 18, 'bold'), fg='darkblue') lblResult2.pack()
至
txtResult2 = Text(font=('arial', 18, 'bold'), fg='darkblue') txtResult2.pack(fill='both', expand=1)
更改以下行
btn_click()
:lblResult2.config(text=""+str(r_edge))
至
txtResult2.delete(1.0, 'end') txtResult2.insert('end', str(r_edge))
推荐阅读
- css - 如何覆盖scss文件中的宽度和高度值
- python - 看不到在python中创建的文件
- javascript - Get the class of an element clicked upon in an iframe?
- ruby-on-rails - 删除的迁移文件和 Heroku
- java - Not getting expected results from wikipedia by using Bliki
- c# - 实体框架与存储过程冲突 - 并发异常
- php - 每行水平滚动 div
- ios - iOS 9.3 中 Swift 4.0 中的未知崩溃
- ios - iOS:如何判断照片属于哪个相册
- c++ - 内核模式驱动程序可以在任何进程上执行 ReadProcessMemory 吗?