Python tkinter : How to change my file icon? - python-3.x

I don't want the python icon I want to change my icon
So,how to change my executable file icon
I tried this
from tkinter import *
import os
top=Tk()
os.file.icon('pyt.ico')
top.mainloop()
but it is showing error

Your indentation is wrong. However:
top.wm_iconbitmap('path_to_youricon.ico')

Related

Adding a button to align with ttk notebook caused a geometry problem

I have found out a method to get a button to align with ttk.Notebook.
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
notebook = ttk.Notebook(root)
ttk.Button(notebook).pack()
notebook.pack(fill='both', expand=1)
label = ttk.Label(notebook, text='Text', font='Arial 50')
notebook.add(label, text='Tab')
root.mainloop()
However, this caused a problem that the geometry manager only displays the button. I have to maximise the window in order to see all the contents.
In my another bigger gui, this is just a little bit of the window. I can’t see the content inside the notebook even I maximise the window.
So, how can I get it working? Thanks for any ideas!
This is due to the fact that you're calling pack on a button inside the notebook. The button is empty so it has a size of zero, and calling pack on the button causes the notebook to shrink to the size of the button.
You shouldn't ever call pack or grid on widgets that are direct children of a notebook, they should only ever be added with the add method of the notebook.
It's not clear where you want the button, but it shouldn't be a child of the notebook. If you make it a child of the root window (eg: ttk.Button(root), you can add it to the root window with pack to get it to be either above, below, or to one of the sides of the notebook.

Problem with py to exe . tkinter widgets not visible

I have made a GUI using tkinter and then converted the py file to exe. But some widgets like the DateEntry widget is not visible in the exe file.
I have to submit for board practical.

Hide tk window when using filedialog

I'm trying to use filedialog.asksavefilename to get a save file path. I am running this code in the IDLE shell and it's a text based interface. This is the function to get the save path:
def getPath():
root=tk.Tk()
root.lift()
root.attributes('-topmost',True)
root.after_idle(root.attributes,'-topmost',False)
path = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=(("Text Documents", "*.txt"),))
root.destroy()
The dialog opened behind other windows, so I used this to make the dialog appear at the front. This works, but there is still an empty window behind it which I don't want. I've tried using root.withdraw() but this just hides everything. I'd like to have only the file dialog open without the empty tk window. Any ideas as to how to do this?
I've found a way to achieve the desired effect:
def getPath():
root=tk.Tk()
root.overrideredirect(True)
root.attributes("-alpha", 0)
path = filedialog.asksaveasfilename(defaultextension=".txt", filetypes=(("Text Documents", "*.txt"),))
root.destroy()
I've removed all of the unnecessary lift and topmost parts - they didn't help. I used root.overrideredirect(True) to remove the title bar and root.attributes("-alpha", 0) to make the window 100% transparent, so you can't see it. The only drawback is that the file dialog window flashes when it opens, but that's not too much of a problem.
from tkinter import Tk
from tkinter.filedialog import asksaveasfilename
def get_path():
root = Tk()
root.withdraw()
path = asksaveasfilename()
root.destroy()
return(path)
print(get_path()) # to verify expected result
Is this the behavior you're looking for? Hope this helps.

Screenshot of QtDesigner window only

Is it possible to get screenshot of certain window and not the entire computer screen?
My window is written with QtDesigner using main window template.The window is use to display results of calculations. How can I take a screenshot of just the one window? Is pyscreenshot able to do this?
I understand that I can do part of the screen using bbox, but if the user moves the window, it won't take the screenshot correctly.
I'm currently using pyscreenshot and it takes a screenshot of entire screen.
I've found a solution based off other posts.
Found in: Python Screenshot of inactive window PrintWindow + win32gui
To solve issue with importing modules, I downloaded pywin32 for python and use these as my imports
import win32gui
import win32ui
from ctypes import windll
from PIL import Image

Closing a tkinter Entry Widget without killing the program

I am currently stepping through the tkinter tutorial at python-course.eu. Is it possible to close an entry widget without killing the program? What I am trying to do is incorporate the tkinter entry box into a pygame program such that the program asks for the players name via an entry box and then closes once the text has been entered. The game should then continue. Is this possible?
What I would like to do is:
-create a pygame surface
-open a tkinter entry widget on top of that surface
-get the users name
-close the tkinter widget
-write text using pygame onto the surface that incorporates the user's name
What is stumping me is the fact that the tkinter examples on python-course.eu all end with a mainloop() statement while I would like pygame to have an event loop so that I can expand the program. I anticipate that the widget creation would occur prior to dropping into the event loop. This is where I am stuck :-(
rather than trying to mix two GUI libraries in the same window, if a prompt is acceptable you could use:
import tkinter as tk
from tkinter import simpledialog
root = tk.Tk() # needed to prevent extra window being created by dialog
root.withdraw() # hide window as not needed
username = simpledialog.askstring('Username', 'Enter username:')
root.destroy()

Resources