Tkinter实现透明窗口最简单的方法

import tkinter as tkroot = tk.Tk()
root.title('Tkinter Window Demo')
root.geometry('600x400+50+50')
root.resizable(False, False)
root.attributes('-alpha', 0.5)root.mainloop()


动态更改鼠标样式

import tkinter as tkroot = tk.Tk()
root.title('Tkinter Window Demo')
root.geometry('600x400+50+50')
# root.resizable(False, False) # 禁止更改窗口大小
root.attributes('-alpha', 0.5)def change_cursor(event):if event.x in range(100, 300): # 当鼠标从距离零点100 到 300 的 x 坐标上开始时,光标变为忙碌状态。root.config(cursor="watch")else:root.config(cursor="")root.bind("<Motion>", change_cursor)root.mainloop()

所有ttk 小部件都有 cursor 参数,允许您在鼠标悬停它们时更改光标

import tkinter as tk
from tkinter import ttk
from ttkbootstrap.constants import *root = tk.Tk()
root.title('Tkinter Window Demo')
# root.geometry('300x300')
# root.resizable(False, False) # 禁止更改窗口大小
root.attributes('-alpha', 0.7)"""
cursor_name:
arrow
based_arrow_down
based_arrow_up
boat
bogosity
bottom_left_corner
bottom_right_corner
bottom_side
bottom_tee
box_spiral
center_ptr
circle
clock
coffee_mug
cross
cross_reverse
crosshair
diamond_cross
dot
dotbox
double_arrow
draft_large
draft_small
draped_box
exchange
fleur
gobbler
gumby
hand1
hand2
heart
icon
iron_cross
left_ptr
left_side
left_tee
leftbutton
ll_angle
lr_angle
man
middlebutton
mouse
pencil
pirate
plus
question_arrow
right_ptr
right_side
right_tee
rightbutton
rtl_logo
sailboat
sb_down_arrow
sb_h_double_arrow
sb_left_arrow
sb_right_arrow
sb_up_arrow
sb_v_double_arrow
shuttle
sizing
spider
spraycan
star
target
tcross
top_left_arrow
top_left_corner
top_right_corner
top_side
top_tee
trek
ul_angle
umbrella
ur_angle
watch
xterm
X_cursor
"""
b1 = ttk.Button(root, text="Button 1", bootstyle=SUCCESS, cursor="watch")
b1.pack(side=LEFT, padx=5, pady=10)b2 = ttk.Button(root, text="Button 2", bootstyle=(INFO, OUTLINE), cursor="trek")
b2.pack(side=LEFT, padx=5, pady=10)root.mainloop()


树状图分层数据

import tkinter as tk
from tkinter import ttk
from ttkbootstrap.constants import *# create root window
root = tk.Tk()
root.title('Treeview Demo - Hierarchical Data')
root.geometry('400x200')# configure the grid layout
root.rowconfigure(0, weight=1)
root.columnconfigure(0, weight=1)# create a treeview
tree = ttk.Treeview(root)
tree.heading('#0', text='Departments', anchor=tk.W)# adding data
tree.insert('', tk.END, text='目录', iid=0, open=False)
tree.insert('', tk.END, text='主页', iid=1, open=False)
tree.insert('', tk.END, text='博客', iid=2, open=False)
tree.insert('', tk.END, text='联系', iid=3, open=False)
tree.insert('', tk.END, text='帮助', iid=4, open=False)# adding children of first node
tree.insert('', tk.END, text='文件夹1', iid=5, open=False)
tree.insert('', tk.END, text='文件夹2', iid=6, open=False)
tree.move(5, 0, 0) # 5(需要添加的子节点iid) 0(代表向iid=0的节点下添加) 0(文件索引默认0开始有五个就是 0,1,2,3,4)
tree.move(6, 0, 1)tree.insert('', tk.END, text='文件1', iid=7, open=False)
tree.insert('', tk.END, text='文件2', iid=8, open=False)
tree.move(7, 5, 0)
tree.move(8, 6, 1)# place the Treeview widget on the root window
tree.grid(row=0, column=0, sticky=tk.NSEW)# run the app
root.mainloop()


画布事件功能

import tkinter as tkroot = tk.Tk()
root.geometry('800x600')
root.title('Canvas Demo - Binding Event')canvas = tk.Canvas(root, width=600, height=400, bg='white')
canvas.pack(anchor=tk.CENTER, expand=True)python_image = tk.PhotoImage(file='暴走.gif')
image_item = canvas.create_image((300, 200),image=python_image
)
canvas.tag_bind(image_item,'<Button-1>',lambda e: canvas.delete(image_item)
)root.mainloop()


不同帧之间的切换

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showerror
from ttkbootstrap.constants import *class TemperatureConverter:@staticmethoddef fahrenheit_to_celsius(f, format=True):result = (f - 32) * 5/9if format:return f'{f}Fahrenheit ={result:.2f}Celsius'return result@staticmethoddef celsius_to_fahrenheit(c, format=True):result = c * 9/5 + 32if format:return f'{c}Celsius ={result:.2f}Fahrenheit'return resultclass ConverterFrame(ttk.Frame):def __init__(self, container, unit_from, converter):super().__init__(container)self.unit_from = unit_fromself.converter = converter# field optionsoptions = {'padx': 5, 'pady': 0}# temperature labelself.temperature_label = ttk.Label(self, text=self.unit_from)self.temperature_label.grid(column=0, row=0, sticky='w',  **options)# temperature entryself.temperature = tk.StringVar()self.temperature_entry = ttk.Entry(self, textvariable=self.temperature)self.temperature_entry.grid(column=1, row=0, sticky='w', **options)self.temperature_entry.focus()# buttonself.convert_button = ttk.Button(self, text='Convert')self.convert_button.grid(column=2, row=0, sticky='w', **options)self.convert_button.configure(command=self.convert)# result labelself.result_label = ttk.Label(self)self.result_label.grid(row=1, columnspan=3, **options)# add padding to the frame and show itself.grid(column=0, row=0, padx=5, pady=5, sticky="nsew")def convert(self, event=None):"""  Handle button click event"""try:input_value = float(self.temperature.get())result = self.converter(input_value)self.result_label.config(text=result)except ValueError as error:showerror(title='Error', message=error)def reset(self):self.temperature_entry.delete(0, "end")self.result_label.text = ''class ControlFrame(ttk.LabelFrame):def __init__(self, container):super().__init__(container)self['text'] = 'Options'# radio buttonsself.selected_value = tk.IntVar()ttk.Radiobutton(self,text='F to C',value=0,variable=self.selected_value,command=self.change_frame).grid(column=0, row=0, padx=5, pady=5)ttk.Radiobutton(self,text='C to F',value=1,variable=self.selected_value,command=self.change_frame).grid(column=1, row=0, padx=5, pady=5)self.grid(column=0, row=1, padx=5, pady=5, sticky='ew')# initialize framesself.frames = {}self.frames[0] = ConverterFrame(container,'Fahrenheit',TemperatureConverter.fahrenheit_to_celsius)self.frames[1] = ConverterFrame(container,'Celsius',TemperatureConverter.celsius_to_fahrenheit)self.change_frame()def change_frame(self):frame = self.frames[self.selected_value.get()]frame.reset()frame.tkraise()class App(tk.Tk):def __init__(self):super().__init__()self.title('Temperature Converter')self.geometry('370x120')self.resizable(False, False)if __name__ == "__main__":app = App()ControlFrame(app)app.mainloop()

颜色选择器

import tkinter as tk
from tkinter import ttk
from tkinter.colorchooser import askcolor
from ttkbootstrap.constants import *root = tk.Tk()
root.title('Tkinter Color Chooser')
root.geometry('300x150')def change_color():colors = askcolor(title="Tkinter Color Chooser")root.configure(bg=colors[1])ttk.Button(root,text='Select a Color',command=change_color).pack(expand=True)root.mainloop()

iShot_2022-11-12_11.35.29

tkinter线程GUI程序Demo

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import showerror
from threading import Thread
import requests
from ttkbootstrap.constants import *class AsyncDownload(Thread):def __init__(self, url):super().__init__()self.html = Noneself.url = urldef run(self):response = requests.get(self.url)self.html = response.textclass App(tk.Tk):def __init__(self):super().__init__()self.title('Webpage Download')self.geometry('870x400')self.resizable(0, 0)self.create_header_frame()self.create_body_frame()self.create_footer_frame()def create_header_frame(self):self.header = ttk.Frame(self)# configure the gridself.header.columnconfigure(0, weight=1)self.header.columnconfigure(1, weight=10)self.header.columnconfigure(2, weight=1)# labelself.label = ttk.Label(self.header, text='URL')self.label.grid(column=0, row=0, sticky=tk.W)# entryself.url_var = tk.StringVar()self.url_entry = ttk.Entry(self.header,textvariable=self.url_var,width=80)self.url_entry.grid(column=1, row=0, sticky=tk.EW)# download buttonself.download_button = ttk.Button(self.header, text='Download')self.download_button['command'] = self.handle_downloadself.download_button.grid(column=2, row=0, sticky=tk.E)# attach the header frameself.header.grid(column=0, row=0, sticky=tk.NSEW, padx=10, pady=10)def handle_download(self):url = self.url_var.get()if url:self.download_button['state'] = tk.DISABLEDself.html.delete(1.0, "end")download_thread = AsyncDownload(url)download_thread.start()self.monitor(download_thread)else:showerror(title='Error',message='Please enter the URL of the webpage.')def monitor(self, thread):if thread.is_alive():# check the thread every 100msself.after(100, lambda: self.monitor(thread))else:self.html.insert(1.0, thread.html)self.download_button['state'] = tk.NORMALdef create_body_frame(self):self.body = ttk.Frame(self)# text and scrollbarself.html = tk.Text(self.body, height=20, width=92)self.html.grid(column=0, row=1)scrollbar = ttk.Scrollbar(self.body,orient='vertical',command=self.html.yview)scrollbar.grid(column=1, row=1, sticky=tk.NS)self.html['yscrollcommand'] = scrollbar.set# attach the body frameself.body.grid(column=0, row=1, sticky=tk.NSEW, padx=10, pady=10)def create_footer_frame(self):self.footer = ttk.Frame(self)# configure the gridself.footer.columnconfigure(0, weight=1)# exit buttonself.exit_button = ttk.Button(self.footer,text='Exit',command=self.destroy)self.exit_button.grid(column=0, row=0, sticky=tk.E)# attach the footer frameself.footer.grid(column=0, row=2, sticky=tk.NSEW, padx=10, pady=10)if __name__ == "__main__":app = App()app.mainloop()

Python tkinter相关Demo演示相关推荐

  1. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu的Command) 目录 tkinter应用案例 1.添加菜单栏组件 2.tkinter应用案例:添 ...

  2. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu/Menu的Command)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Menu/Menu的Command) 目录 tkinter应用案例 1.添加右键弹出菜单 2.点击一个按钮弹 ...

  3. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Canvas)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Canvas) 导读 动态演示调用python库的tkinter带你进入GUI世界(Canvas) 目录 t ...

  4. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Find/undo事件)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Find/undo事件) 导读 动态演示调用python库的tkinter带你进入GUI世界(Find/un ...

  5. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(text.insert/link各种事件)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(text.insert/link各种事件) 导读 动态演示调用python库的tkinter带你进入GUI世 ...

  6. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Button展示图片事件) 导读 动态演示调用python库的tkinter带你进入GUI世界(Button ...

  7. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Scale/Scale的Command)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Scale/Scale的Command) 导读 动态演示调用python库的tkinter带你进入GUI世界 ...

  8. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Listbox/Scrollbar) 导读 动态演示调用python库的tkinter带你进入GUI世界(L ...

  9. Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(计算器简单功能)

    Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(计算器简单功能) 导读 动态演示调用python库的tkinter带你进入GUI世界(计算器简单功能) 目录 ...

最新文章

  1. 灰度图像直方图均衡化公式及实现
  2. Qt之QHeaderView排序
  3. 大学生英语fif测试系统_英语听力解题技巧
  4. DOM 节点类型及属性
  5. 求正整数N(N1)的质因数的个数,相同的质因数需要重复计算(java)
  6. 诗与远方:无题(五十五)- 曾经写给妹子的一首诗
  7. java三个整型变量_初值自定义.if按由小到大的顺序输出这三个数_C语言实现3个数从小到大排序/输出的方法示例...
  8. 购物商城Web开发第十四天
  9. base command
  10. 毕设题目:Matlab语音情感识别
  11. ecshop php7 mysql_ecshop如何修改并支持PHP7
  12. 【LeetCode】274. H指数
  13. GTASA圣安地列斯如何打MOD2(简单教程)
  14. leetcode学习记录_贪心
  15. java 内存很高_Java服务器内存和CPU占用过高的原因
  16. 从序列化输入到蛋白质结构预测(RoseTTAFoldAlphaFold2)
  17. 一维码EAN 13简介及其解码实现(zxing-cpp)
  18. 远程连接MySQL, 10038问题
  19. 地缘剧本杀 (五):雨衣人(原创小说连载,内含语音)
  20. 【计算机折腾】加装内存条(一)

热门文章

  1. Python练习(四)
  2. 第四次作业:“师路南通网站”用户体验分析
  3. 南京理工大学校长计算机学院教授,南京理工大学杨静宇教授、扬州大学郭志波博士应邀来我校作学术报告...
  4. 熬过最艰难的日子说说
  5. 如何取消计算机共享密码设置,win7系统计算机取消共享密码的操作方法
  6. 泰坦尼克号生存分析(新手入门)
  7. 2020-03-05
  8. mysql count(*)使用索引和成本计算
  9. ubuntu14.04更换国内软件源的方法
  10. Microsoft.NET Framework 全面开源