Zak
October 30, 2023, 2:38pm
1
Hello everyone,
I’m trying to make a “copy to clipboard” button but it’s not working actually.
I tried to follow the solutions on
Copy to clipboard using st.markdown but I got this error instead:
“PyperclipException: Pyperclip could not find a copy/paste mechanism for your system. For more information, please see Welcome to Pyperclip’s documentation! — Pyperclip 1.5 documentation ”
I’ve tried installing the necessary packages to make copy/paste possible (xcel, xclip or even PyQT4) but I still get this error, do you have any solution please?
Hi @Zak
There’s a similar functionality that st.code provides, have you given this a try, more info and code snippet in the link below:
1 Like
Zak
November 6, 2023, 9:12am
3
Hi @dataprofessor , thank you for your answer,
I also tried to use st.code but it seems that it gives you a single-line response, without newlines, and makes the desired response look less aesthetic than st.markdown (even if I use langague = “markdown”), is there any other solution please ?
Hi @Zak
The aesthetic of the returned contents in st.code is a function of the provided input text.
Let’s say that if we provide the text as a single line, then the returned output would be a single line
code = 'def hello(): print("Hello, Streamlit!")'
st.code(code, language='python')
To achieve multi line then we’ll have to format our string to have new lines (\n) and to add tabs we can use \t.
Please consider the following code snippet:
import streamlit as st
code1 = '''def hello():
print("Hello, Streamlit!")'''
st.code(code1)
code2 = '''def hello(): print("Hello, Streamlit!")'''
st.code(code2)
code3 = '''def hello():\n\tprint("Hello, Streamlit!")'''
st.code(code3)
code4 = '''def hello():\n print("Hello, Streamlit!")'''
st.code(code4)
code5 = '''def hello():\n print("Hello, Streamlit!")'''
st.code(code5)
which gives the following output:
Hope this helps
system
Closed
May 10, 2024, 6:49am
5
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.