python - Tkinter 标签被切断
问题描述
所以我对 Tkinter 和整个 Python 都很陌生。我正在做一个从互联网上获取歌词的项目,或者简单地将它们显示给你,或者使用马尔可夫链来生成一首随机歌曲。我已经让代码工作了,我现在只是想实现一个 GUI。我已经到了可以输入歌曲和艺术家的地步,程序会给你歌词。不过现在,歌词仍然出现在控制台中。我现在正试图将歌词放入 GUI 中,但是当我尝试将它们放入文本时会被切断。我使用了 tkinter 部分的教程,所以我不确定代码的哪一部分是相关的。有问题的文本在 GetLyrics 类中。(lyric_label) 目前仅使用“示例”作为占位符。提前非常感谢你,如果我'请告诉我'
这是问题的图片:
import get_lyrics
import textwrap
import tkinter as tk
from tkinter import ttk
from cc_markov import MarkovChain
lyric_data = MarkovChain()
LARGE_FONT = ("Verdana", 12)
small_font = ("Verdana", 10)
class lyrGenApp(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
tk.Tk.iconbitmap(self, "logo.ico")
tk.Tk.wm_title(self, "LyrGen")
tk.Tk.wm_geometry(self, '1024x576')
self.resizable(False, False)
container = tk.Frame(self)
container.pack(side="top", fill="both")
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, GenLyrics, GetLyrics):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Lyrgen", font=LARGE_FONT)
label.pack(pady=10, padx=10)
gen_button = ttk.Button(self, text="Generate Lyrics",
command=lambda:
controller.show_frame(GenLyrics))
gen_button.pack()
get_button = ttk.Button(self, text="Get Lyrics",
command=lambda:
controller.show_frame(GetLyrics))
get_button.pack()
class GenLyrics(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Generate Lyrics", font = LARGE_FONT)
label.pack(pady = 10, padx = 10)
button1 = ttk.Button(self, text="Home",
command=lambda: controller.show_frame(StartPage))
button1.pack()
class GetLyrics(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="Get Lyrics", font = LARGE_FONT)
label.place(relx = 0.5, rely = 0.3, anchor = 's')
prompt_song = tk.Label(self, text = "Enter Song:", font = small_font)
prompt_song.place(relx = 0.38, rely = 0.6, anchor = 's')
prompt_artist = tk.Label(self, text = "Enter Artist:", font =
small_font)
prompt_artist.place(relx = 0.38, rely = 0.8, anchor = 's')
song_entry = tk.Entry(self)
song_entry.place(relx = 0.5, rely = 0.6, anchor = 's')
artist_entry = tk.Entry(self)
artist_entry.place(relx = 0.5, rely = 0.8, anchor = 's')
home_button = ttk.Button(self, text="Home",
command=lambda: controller.show_frame(StartPage))
home_button.place(relx = 0.1, rely = 0.7, anchor = 's')
lyric_label = tk.Label(self, text = "example", font = small_font,
justify = "left")
lyric_label.place(relx = .1, rely = .85)
lyrics = []
def get_button(list):
lyrics = list
print(" ".join(lyrics))
search_button = ttk.Button(self, text="Search", command= lambda:
get_button(get_lyrics.get_song(song_entry.get(),
artist_entry.get())))
search_button.place(relx = 0.6, rely = 0.7, anchor = 's')
app = lyrGenApp()
app.mainloop()
解决方案
在此行中减少rely
to.8
或类似的值:.75
lyric_label.place(relx = .1, rely = .85)
改成 :
lyric_label.place(relx = .1, rely = .8)
或者
lyric_label.place(relx = .1, rely = .75)
推荐阅读
- javascript - 如何在单击功能上将表格行数据从jsp传递到servlet
- symfony4 - Symfony 未找到页面
- haskell - 如何将 [IO X] 转换为 IO [X]
- javascript - 如何选择当前选项卡右侧的所有选项卡?
- wordpress - 更新页面的链接 - WordPress
- angular - Angular-如何在出现 401 错误时关闭快餐栏?
- python - 当我想说不止一件事时,如何在 Python 的 Turtle 图形中使用 textinput()?
- microsoft-graph-api - 如何从 OWA 获取各种日期和时间格式列表?
- sql - JPA 本机查询日期比较抛出
- javascript - React js - 使用 Bootstrap4 CDN,如何在反应中手动启用 javascript 事件处理程序?