mirror of
https://github.com/TomSchimansky/CustomTkinter.git
synced 2023-08-10 21:13:13 +03:00
updated readme for new wiki
This commit is contained in:
parent
d4ffd986e0
commit
4b31e4dd0e
345
Readme.md
345
Readme.md
@ -28,7 +28,9 @@ pip3 install customtkinter
|
|||||||
**Update existing installation:** ```pip3 install customtkinter --upgrade```\
|
**Update existing installation:** ```pip3 install customtkinter --upgrade```\
|
||||||
(from time to time bugs are getting fixed and new features are added)
|
(from time to time bugs are getting fixed and new features are added)
|
||||||
|
|
||||||
PyPI: https://pypi.org/project/customtkinter/
|
### Documentation
|
||||||
|
|
||||||
|
A **detailed documentation** can be found **[here](https://github.com/TomSchimansky/CustomTkinter/wiki)**.
|
||||||
|
|
||||||
### Example program (simple button):
|
### Example program (simple button):
|
||||||
To test customtkinter you can try this simple example with only a single button:
|
To test customtkinter you can try this simple example with only a single button:
|
||||||
@ -160,344 +162,3 @@ OpenStreetMap or other tile based maps:
|
|||||||
|
|
||||||
You can find the TkinterMapView library and the example program here:
|
You can find the TkinterMapView library and the example program here:
|
||||||
https://github.com/TomSchimansky/TkinterMapView
|
https://github.com/TomSchimansky/TkinterMapView
|
||||||
|
|
||||||
# Documentation - CustomTkinter Elements
|
|
||||||
|
|
||||||
### CTk
|
|
||||||
You can use the normal ``tkinter.Tk`` class to create the root window,
|
|
||||||
but if you want a background color that changes with the appearance mode and a dark title-bar on macOS,
|
|
||||||
you should use the `customtkinter.CTk` class which behaves exactly like the normal Tk
|
|
||||||
class, except that you can also set a tuple color as bg color.
|
|
||||||
|
|
||||||
Example Code:
|
|
||||||
|
|
||||||
```python
|
|
||||||
root_tk = customtkinter.CTk()
|
|
||||||
|
|
||||||
... program ...
|
|
||||||
|
|
||||||
root_tk.mainloop()
|
|
||||||
```
|
|
||||||
<details>
|
|
||||||
<summary>Show all arguments and methods:</summary>
|
|
||||||
|
|
||||||
argument | value
|
|
||||||
--- | ---
|
|
||||||
bg_color or bg | tuple: (light_color, dark_color) or single color
|
|
||||||
|
|
||||||
CTk Methods:
|
|
||||||
|
|
||||||
```python
|
|
||||||
root_tk = customtkinter.CTk()
|
|
||||||
# configure bg color with single or tuple color
|
|
||||||
root_tk.configure(bg_color="gray20")
|
|
||||||
root_tk.configure(bg_color=(<light-mode color>, <dark-mode color>))
|
|
||||||
```
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### CTkToplevel
|
|
||||||
|
|
||||||
CTkToplevel works exactly like the `Tkinter.Toplevel`, and should be used to create more than one window.
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Show all arguments and methods:</summary>
|
|
||||||
|
|
||||||
argument | value
|
|
||||||
--- | ---
|
|
||||||
bg_color or bg | tuple: (light_color, dark_color) or single color
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### CTkFrame
|
|
||||||
Example Code:
|
|
||||||
```python
|
|
||||||
frame = customtkinter.CTkFrame(master=root_tk,
|
|
||||||
width=200,
|
|
||||||
height=200,
|
|
||||||
corner_radius=10)
|
|
||||||
frame.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
|
|
||||||
```
|
|
||||||
<details>
|
|
||||||
<summary>Show all arguments and methods:</summary>
|
|
||||||
|
|
||||||
argument | value
|
|
||||||
--- | ---
|
|
||||||
master | root, tkinter.Frame or CTkFrame
|
|
||||||
width | slider width in px
|
|
||||||
height | slider height in px
|
|
||||||
fg_color | foreground color, tuple: (light_color, dark_color) or single color
|
|
||||||
bg_color | background color, tuple: (light_color, dark_color) or single color
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### CTkButton
|
|
||||||
Example Code:
|
|
||||||
```python
|
|
||||||
def button_event():
|
|
||||||
print("button pressed")
|
|
||||||
|
|
||||||
button = customtkinter.CTkButton(master=root_tk,
|
|
||||||
width=120,
|
|
||||||
height=32,
|
|
||||||
border_width=0,
|
|
||||||
corner_radius=8,
|
|
||||||
text="CTkButton",
|
|
||||||
command=button_event)
|
|
||||||
button.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
|
|
||||||
```
|
|
||||||
<details>
|
|
||||||
<summary>Show all arguments and methods:</summary>
|
|
||||||
|
|
||||||
argument | value
|
|
||||||
--- | ---
|
|
||||||
master | root, tkinter.Frame or CTkFrame
|
|
||||||
command | callback function
|
|
||||||
textvariable | tkinter.StringVar object to change text of button
|
|
||||||
text | string
|
|
||||||
width | button width in px
|
|
||||||
height | button height in px
|
|
||||||
corner_radius | corner radius in px
|
|
||||||
border_width | button border width in px
|
|
||||||
fg_color | forground color, tuple: (light_color, dark_color) or single color
|
|
||||||
bg_color | background color, tuple: (light_color, dark_color) or single color
|
|
||||||
border_color | border color, tuple: (light_color, dark_color) or single color
|
|
||||||
hover_color | hover color, tuple: (light_color, dark_color) or single color
|
|
||||||
text_color | text color, tuple: (light_color, dark_color) or single color
|
|
||||||
text_font | button text font, tuple: (font_name, size)
|
|
||||||
hover | enable/disable hover effect: True, False
|
|
||||||
image | put an image on the button, removes the text, must be class PhotoImage
|
|
||||||
compound | set image orientation if image and text are given ("top", "left", "bottom", "right")
|
|
||||||
state | tkinter.NORMAL (standard) or tkinter.DISABLED (not clickable, darker color)
|
|
||||||
|
|
||||||
CTkButton Methods:
|
|
||||||
|
|
||||||
```python
|
|
||||||
CTkButton.set_text(new_text)
|
|
||||||
CTkButton.set_image(new_image)
|
|
||||||
CTkButton.configure(text=new_text)
|
|
||||||
CTkButton.configure(bg_color=new_bg_color,
|
|
||||||
fg_color=new_fg_color,
|
|
||||||
hover_color=new_hover_color,
|
|
||||||
text_color=new_text_color)
|
|
||||||
CTkButton.configure(state=tkinter.DISABLED)
|
|
||||||
CTkButton.configure(state=tkinter.NORMAL)
|
|
||||||
button_state = CTkButton.state
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### CTkLabel
|
|
||||||
Example Code:
|
|
||||||
```python
|
|
||||||
label = customtkinter.CTkLabel(master=root_tk,
|
|
||||||
text="CTkLabel",
|
|
||||||
width=120,
|
|
||||||
height=25,
|
|
||||||
corner_radius=8)
|
|
||||||
label.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
|
|
||||||
```
|
|
||||||
<details>
|
|
||||||
<summary>Show all arguments and methods:</summary>
|
|
||||||
|
|
||||||
argument | value
|
|
||||||
--- | ---
|
|
||||||
master | root, tkinter.Frame or CTkFrame
|
|
||||||
variable | tkinter.StringVar object
|
|
||||||
text | string
|
|
||||||
width | label width in px
|
|
||||||
height | label height in px
|
|
||||||
corner_radius | corner radius in px
|
|
||||||
fg_color | foreground color, tuple: (light_color, dark_color) or single color
|
|
||||||
bg_color | background color, tuple: (light_color, dark_color) or single color, None for transparent bg
|
|
||||||
text_color | label text color, tuple: (light_color, dark_color) or single color
|
|
||||||
text_font | label text font, tuple: (font_name, size)
|
|
||||||
|
|
||||||
CTkLabel Methods:
|
|
||||||
|
|
||||||
```python
|
|
||||||
CTkLabel.configure(text=new_text)
|
|
||||||
CTkLabel.configure(fg_color=new_fg_color,
|
|
||||||
bg_color=new_bg_color,
|
|
||||||
text_color=new_text_color)
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### CTkEntry
|
|
||||||
Example Code:
|
|
||||||
```python
|
|
||||||
entry = customtkinter.CTkEntry(master=root_tk,
|
|
||||||
placeholder_text="CTkEntry",
|
|
||||||
width=120,
|
|
||||||
height=25,
|
|
||||||
corner_radius=10)
|
|
||||||
entry.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
|
|
||||||
|
|
||||||
text = entry.get()
|
|
||||||
```
|
|
||||||
<details>
|
|
||||||
<summary>Show all arguments and methods:</summary>
|
|
||||||
|
|
||||||
argument | value
|
|
||||||
--- | ---
|
|
||||||
master | root, tkinter.Frame or CTkFrame
|
|
||||||
variable | tkinter.StringVar object
|
|
||||||
width | entry width in px
|
|
||||||
height | entry height in px
|
|
||||||
corner_radius | corner radius in px
|
|
||||||
fg_color | foreground color, tuple: (light_color, dark_color) or single color
|
|
||||||
bg_color | background color, tuple: (light_color, dark_color) or single color
|
|
||||||
text_color | entry text color, tuple: (light_color, dark_color) or single color
|
|
||||||
placeholder_text_color | tuple: (light_color, dark_color) or single color
|
|
||||||
placeholder_text | hint on the entry input (disappears when selected), default is None
|
|
||||||
text_font | entry text font, tuple: (font_name, size)
|
|
||||||
|
|
||||||
|
|
||||||
CTkEntry Methods:
|
|
||||||
|
|
||||||
```python
|
|
||||||
CTkEntry.delete(...) # like the standard tkinter Entry...
|
|
||||||
CTkEntry.insert(...)
|
|
||||||
text = CTkEntry.get()
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### CTkCheckBox
|
|
||||||
Examle Code:
|
|
||||||
|
|
||||||
```python
|
|
||||||
checkbox = customtkinter.CTkCheckBox(master=root_tk,
|
|
||||||
text="CTkCheckBox")
|
|
||||||
checkbox.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
|
|
||||||
```
|
|
||||||
<details>
|
|
||||||
<summary>Show all arguments and methods:</summary>
|
|
||||||
|
|
||||||
argument | value
|
|
||||||
--- | ---
|
|
||||||
master | root, tkinter.Frame or CTkFrame
|
|
||||||
text | string
|
|
||||||
width | box width in px
|
|
||||||
height | box height in px
|
|
||||||
corner_radius | corner radius in px
|
|
||||||
border_width | box border width in px
|
|
||||||
fg_color | foreground (inside) color, tuple: (light_color, dark_color) or single color
|
|
||||||
bg_color | background color, tuple: (light_color, dark_color) or single color
|
|
||||||
border_color | border color, tuple: (light_color, dark_color) or single color
|
|
||||||
hover_color | hover color, tuple: (light_color, dark_color) or single color
|
|
||||||
text_color | text color, tuple: (light_color, dark_color) or single color
|
|
||||||
text_font | button text font, tuple: (font_name, size)
|
|
||||||
hover | enable/disable hover effect: True, False
|
|
||||||
state | tkinter.NORMAL (standard) or tkinter.DISABLED (not clickable, darker color)
|
|
||||||
command | function will be called when the checkbox is clicked
|
|
||||||
|
|
||||||
CTkCheckBox Methods:
|
|
||||||
```python
|
|
||||||
CTkCheckBox.get() # 1 or 0 (checked or not checked)
|
|
||||||
CTkCheckBox.select() # turns on checkbox
|
|
||||||
CTkCheckBox.deselect() # turns off checkbox
|
|
||||||
CTkCheckBox.toggle() # change check state of checkbox
|
|
||||||
CTkCheckBox.configure(text=new_text)
|
|
||||||
CTkCheckBox.configure(bg_color=new_bg_color,
|
|
||||||
fg_color=new_fg_color,
|
|
||||||
hover_color=new_hover_color,
|
|
||||||
text_color=new_text_color)
|
|
||||||
CTkCheckBox.configure(state=tkinter.DISABLED)
|
|
||||||
CTkCheckBox.configure(state=tkinter.NORMAL)
|
|
||||||
checkbox_state = CTkCheckBox.state
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### CTkSlider
|
|
||||||
Example Code:
|
|
||||||
```python
|
|
||||||
def slider_event(value):
|
|
||||||
print(value)
|
|
||||||
|
|
||||||
slider = customtkinter.CTkSlider(master=root_tk,
|
|
||||||
width=160,
|
|
||||||
height=16,
|
|
||||||
border_width=5.5,
|
|
||||||
from_=0,
|
|
||||||
to=100,
|
|
||||||
command=slider_event)
|
|
||||||
slider.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
|
|
||||||
```
|
|
||||||
<details>
|
|
||||||
<summary>Show all arguments and methods:</summary>
|
|
||||||
|
|
||||||
argument | value
|
|
||||||
--- | ---
|
|
||||||
master | root, tkinter.Frame or CTkFrame
|
|
||||||
command | callback function, gest called when slider gets changed
|
|
||||||
variable | tkinter.IntVar or tkinter.DoubleVar object
|
|
||||||
width | slider width in px
|
|
||||||
height | slider height in px
|
|
||||||
from_ | lower slider value
|
|
||||||
to | upper slider value
|
|
||||||
number_of_steps | number of steps in which the slider can be positioned
|
|
||||||
border_width | space around the slider rail in px
|
|
||||||
fg_color | foreground color, tuple: (light_color, dark_color) or single color
|
|
||||||
progress_color | tuple: (light_color, dark_color) or single color, colors the slider line before the round button and is set to fg_color by default
|
|
||||||
bg_color | background color, tuple: (light_color, dark_color) or single color
|
|
||||||
border_color | slider border color, normally transparent (None)
|
|
||||||
button_color | color of the slider button, tuple: (light_color, dark_color) or single color
|
|
||||||
button_hover_color | hover color, tuple: (light_color, dark_color) or single color
|
|
||||||
|
|
||||||
CTkSlider Methods:
|
|
||||||
```python
|
|
||||||
value = CTkSlider.get()
|
|
||||||
CTkSlider.set(value)
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### CTkProgressBar
|
|
||||||
Example Code:
|
|
||||||
```python
|
|
||||||
progressbar = customtkinter.CTkProgressBar(master=root_tk,
|
|
||||||
width=160,
|
|
||||||
height=20,
|
|
||||||
border_width=5)
|
|
||||||
progressbar.place(relx=0.5, rely=0.5, anchor=tkinter.CENTER)
|
|
||||||
|
|
||||||
progressbar.set(value)
|
|
||||||
```
|
|
||||||
<details>
|
|
||||||
<summary>Show all arguments and methods:</summary>
|
|
||||||
|
|
||||||
argument | value
|
|
||||||
--- | ---
|
|
||||||
master | root, tkinter.Frame or CTkFrame
|
|
||||||
width | slider width in px
|
|
||||||
height | slider height in px
|
|
||||||
border_width | border width in px
|
|
||||||
fg_color | foreground color, tuple: (light_color, dark_color) or single color
|
|
||||||
bg_color | background color, tuple: (light_color, dark_color) or single color
|
|
||||||
border_color | slider border color, tuple: (light_color, dark_color) or single color
|
|
||||||
progress_color | progress color, tuple: (light_color, dark_color) or single color
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### Special commands
|
|
||||||
Change appearance mode:
|
|
||||||
```python
|
|
||||||
customtkinter.set_appearance_mode("Light")
|
|
||||||
customtkinter.set_appearance_mode("Dark")
|
|
||||||
customtkinter.set_appearance_mode("System")
|
|
||||||
|
|
||||||
print(customtkinter.get_appearance_mode())
|
|
||||||
```
|
|
||||||
|
|
||||||
Set default color theme:
|
|
||||||
```python
|
|
||||||
customtkinter.set_default_color_theme("dark-blue") # Themes: "blue" (standard), "green", "dark-blue"
|
|
||||||
```
|
|
||||||
|
|
||||||
Use macOS darkmode window style without using the `customtkinter.Ctk` class:
|
|
||||||
```python
|
|
||||||
customtkinter.enable_macos_darkmode() # get darkmode window style
|
|
||||||
|
|
||||||
... program ...
|
|
||||||
|
|
||||||
customtkinter.disable_macos_darkmode() # disable darkmode (very important!)
|
|
||||||
```
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
__version__ = "3.3"
|
__version__ = "3.3"
|
||||||
|
|
||||||
from .customtkinter_dialog import CTkDialog
|
from .customtkinter_input_dialog import CTkInputDialog
|
||||||
from .customtkinter_button import CTkButton
|
from .customtkinter_button import CTkButton
|
||||||
from .customtkinter_slider import CTkSlider
|
from .customtkinter_slider import CTkSlider
|
||||||
from .customtkinter_frame import CTkFrame
|
from .customtkinter_frame import CTkFrame
|
||||||
|
@ -10,7 +10,7 @@ from .customtkinter_frame import CTkFrame
|
|||||||
from .customtkinter_toplevel import CTkToplevel
|
from .customtkinter_toplevel import CTkToplevel
|
||||||
|
|
||||||
|
|
||||||
class CTkDialog:
|
class CTkInputDialog:
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
master=None,
|
master=None,
|
||||||
title="CTkDialog",
|
title="CTkDialog",
|
@ -1,8 +1,8 @@
|
|||||||
import customtkinter
|
import customtkinter
|
||||||
import tkinter
|
import tkinter
|
||||||
|
|
||||||
customtkinter.set_appearance_mode("light")
|
customtkinter.set_appearance_mode("dark")
|
||||||
customtkinter.set_default_color_theme("dark-blue")
|
customtkinter.set_default_color_theme("blue")
|
||||||
|
|
||||||
app = customtkinter.CTk()
|
app = customtkinter.CTk()
|
||||||
app.geometry("400x300")
|
app.geometry("400x300")
|
||||||
@ -17,7 +17,7 @@ def change_mode():
|
|||||||
|
|
||||||
|
|
||||||
def button_click_event():
|
def button_click_event():
|
||||||
dialog = customtkinter.CTkDialog(master=None, text="Type in a number:", title="Test")
|
dialog = customtkinter.CTkInputDialog(master=None, text="Type in a number:", title="Test")
|
||||||
print("Number:", dialog.get_input())
|
print("Number:", dialog.get_input())
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user