как скопировать строку, которая появляется в графическом интерфейсе tkinter - PullRequest
0 голосов
/ 05 июня 2019

У меня есть скрипт генератора паролей, который работает нормально, проблема в том, что я представляю пароль в графическом интерфейсе пользователя в метке, и он не дает мне возможности скопировать его, чтобы я мог поставить пароль там, где я хочу, какМогу ли я напечатать пароль в графический интерфейс, чтобы я мог скопировать его после, есть ли лучший способ, чем метка?Я использую функцию

tk.Label(root,text=k).grid(row=1)

k, являющуюся переменной, в которой хранится пароль. Альтернативно, если есть какая-то функция python, которая позволяет мне просто скопировать содержимое k в буфер обмена, что может быть даже лучшеспасибо

Ответы [ 2 ]

2 голосов
/ 05 июня 2019

Самое простое решение - использовать виджет Entry с состоянием, установленным на "readonly".

Пример:

import tkinter as tk

root = tk.Tk()
entry = tk.Entry(root)
entry.pack(side="top", padx=20, pady=20)

# insert the password
entry.insert(0, "SuperSecretPassw0rd!")

# configure the entry to readonly
entry.configure(state="readonly")

root.mainloop()

Вы также можете автоматически добавить его в буфер обмена с помощью методов clipboard_clear и clipboard_append:

root.clipboard_clear()
root.clipboard_append(entry.get())
1 голос
/ 05 июня 2019

Если я правильно понимаю вашу проблему, вы хотите получить или установить значение в графическом интерфейсе TK?Вместо использования Label я бы использовал Entry, и я бы использовал один из классов переменных TK (например, StringVar) для k, которые имеют get и set методы

вот пример скрипта, который я использую для получения и установки текстовых значений в виджете TK:

frame = tk.Frame(master)
frame.pack()
filepath = tk.StringVar()
filepath.set("/Volumes/data/data/test_data/")        
fileentry = tk.Entry(frame, textvariable=filepath, width=125)
fileentry.pack()

if something:
    a = filepath.get()

ссылка на классы переменных TK: https://effbot.org/tkinterbook/variable.htm

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