Как очистить метку, назначенную сетке в Specifi c Сценарий Tkinter - PullRequest
0 голосов
/ 19 апреля 2020

В настоящее время я пишу программу для чтения и просмотра манги, использующую библиотеку tkinter в python для gui, я пытаюсь сделать так, чтобы она в настоящее время перечисляла названия, и когда я делаю это, я понимаю, что они перекрываются Я искал далеко и широко, но не смог найти хорошую процедуру, позволяющую сказать «удалить / забыть» их при новом нажатии кнопки.

Мой код указан ниже:

import json, webbrowser, requests
import tkinter as tk
from tkinter.ttk import *
from urllib import *
import urlopen
from urllib.request import *
import os
os.system("chcp 65001")

app = tk.Tk()

def get_button():
    mid = entry.get()
    if mid == "soap":
        mid = "176758"
    url = f"https://somewebsite/api/gallery/{mid}"
    #label and pack for manga id
    mangaid = tk.Label(text=f"ID : {mid}")
    mangaid.grid(column=0, row=4, columnspan=2,)
    #prints the url
    print(url)
    #open url data
    uf = requests.request(method="get",url=url)
    j_result = uf.json()
    title = j_result['title']
    j_title = title['japanese']
    e_title = title['english']
    #shows the title text
    mangaide = tk.Label(text=f"English Title : {e_title}")
    mangaidj = tk.Label(text=f"Japanese Title : {j_title}")
    mangaide.grid(column=0, row=5, columnspan=2,)
    mangaidj.grid(column=0, row=6, columnspan=2,)

def on_open():
    mid = entry.get()
    if mid == "soap":
        mid = "176758"
    URL = f"https://somewebsite.net/g/{mid}/"
    #opens url
    webbrowser.open(URL, new=2)
    print(URL)


enterid = tk.Label(text="Enter ID or Name")
entry = tk.Entry()
button = tk.Button(text="Get", command=get_button)
button2 = tk.Button(text="Open", command=on_open)
enterid.grid(column=0, columnspan=2, pady=(10))
entry.grid(column=0, columnspan=2, padx=(50))
button.grid(row=3, column=0, pady=(10))
button2.grid(row=3,column=1)


app.mainloop()

Если вы посмотрите на строки 29-32, я назначаю метку и помещаю ее в сетку, хотя, когда я снова нажимаю кнопку, чтобы получить новые данные, она выполняет следующие действия:

1st Data Захват

2-й захват данных

В первом вы видите, что он работал отлично, но во 2-м захвате вы можете видеть, что он занял предыдущий ответы и наложение их сзади, поэтому в самом деле, пытаясь найти способ исправить это, моя главная цель - найти способ удалить наложенный текст.

Извините, если этого недостаточно, достаточно указать c, если это не так, пожалуйста, свяжитесь со мной по поводу разногласий ( Ganoosh # 4020 ) или через комментарии о переполнении стека.

1 Ответ

2 голосов
/ 19 апреля 2020

Создайте пустые метки выше app.mainloop(), например:

mangaide = tk.Label()
mangaidj = tk.Label()
mangaide.grid(column=0, row=5, columnspan=2,)
mangaidj.grid(column=0, row=6, columnspan=2,)

и поместите в них текст внутри функции get_button() с использованием ключевого слова global. Измените вашу get_button() функцию следующим образом:

def get_button():
    global mangaidj, mangaide # Using global keyword to access those Labels
    mid = entry.get()
    if mid == "soap":
        mid = "176758"
    url = f"https://somewebsite/api/gallery/{mid}"
    #label and pack for manga id
    mangaid = tk.Label(text=f"ID : {mid}")
    mangaid.grid(column=0, row=4, columnspan=2,)
    #prints the url
    print(url)
    #open url data
    uf = requests.request(method="get",url=url)
    j_result = uf.json()
    title = j_result['title']
    j_title = title['japanese']
    e_title = title['english']
    #shows the title text
    mangaide.config(text=f"English Title : {e_title}") # These lines will
    mangaidj.config(text=f"Japanese Title : {j_title}") # update the text each time

Hpoe, это помогает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...