import tkinter as tk
from subprocess import check_call
def copy_name():
cmd = 'echo ' name.strip() '|clip'
return check_call(cmd, shell=True)
root = tk.Toplevel(background="black")
root.title("Copying")
root.resizable(False, False)
T = tk.Label(root, text=name, height=2, width=len(name) 25, background="black", foreground="white")
T.pack()
button = tk.Button(root, text="Copy", command=copy_name, background="black", foreground="white")
button.pack()
tk.mainloop()
This is my code.
I just wanted to test this way of copying text...
About my expectations... i want to understand from where those windows are appearing, and how to stop it. Im just a newbie in Python and Tkinter... so please, tell me what i did wrong
CodePudding user response:
Every tkinter window requires a root window - an instance of Tk. If you don't create one, one will be created automatically. When you do root = tk.Toplevel(background="black"), tkinter will first create an instance of Tk and then it will create your Toplevel, resulting in two windows.
The solution in this case is to call Tk instead of Toplevel. Also, you'll need to remove the background="black" argument and instead configure the background in a separate step.
root = tk.Tk()
root.configure(background="black")
CodePudding user response:
As @Bryan said, you should forget about Toplevel(). The normal way is Tk().
Try this:
import tkinter as tk
import tkinter.ttk as ttk
root = tk.Tk()
label = tk.Label( root, text='Select:', background='green').pack(side='top')
btn1 = ttk.Button( root, text='Discard').pack()
btn2 = ttk.Button( root, text='Quit').pack()
while True:
root.mainloop()

