首页 > 编程语言 >Python_Gui_tkinker学习笔记

Python_Gui_tkinker学习笔记

时间:2023-12-11 16:37:03浏览次数:47  
标签:Python text Gui window tk win tkinker button row

# -*- coding:utf-8 -*-
import tkinter as tk

创建主窗口

# 调用Tk()创建主窗口
root_window =tk.Tk()

窗口名字

# 给主窗口起一个名字,也就是窗口的名字
root_window.title('C语言中文网:c.biancheng.net')

打开窗口

#开启主循环,让窗口处于显示状态
root_window.mainloop()

创建标签之后,需要使用 pack 方法放在主窗口内部

# 将标签对象放置在主窗口内
text.pack()

按钮同理

# 添加按钮
button=tk.Button(root_window,text="关闭",command=root_window.quit)
# 这里将按钮放置在主窗口的底部
button.pack(side="bottom")

基本案例

import tkinter as tk
# 定义窗口
window = tk.Tk()

window.title('c语言中文网')
window.geometry('300x300')
window.iconbitmap('C:/Users/Administrator/Desktop/favicon.ico')

# 定义回调函数
def callback():
    print("执行回调函数","C语言中文网欢迎您")
    
# 点击执行按钮
button = tk.Button(window, text="执行", command=callback)
button.pack()

window.mainloop()

窗口位置

居中

import tkinter as tk
window = tk.Tk()
window.title('c语言中文网')
window.iconbitmap('C:/Users/Administrator/Desktop/favicon.ico')
# 设置窗口大小变量
width = 300
height = 300
# 窗口居中,获取屏幕尺寸以计算布局参数,使窗口居屏幕中央
screenwidth = window.winfo_screenwidth()
screenheight = window.winfo_screenheight()
size_geo = '%dx%d+%d+%d' % (width, height, (screenwidth-width)/2, (screenheight-height)/2)
window.geometry(size_geo)
window.mainloop()

Label设置

label = tk.Label(win, text="网址:c.biancheng.net",font=('宋体',20, 'bold italic'),bg="#7CCD7C",
                 # 设置标签内容区大小
                 width=30,height=5,
                 # 设置填充区距离、边框宽度和其样式(凹陷式)
                 padx=10, pady=15, borderwidth=10, relief="sunken")

按钮设置

# 设置回调函数
def callback():
    print ("click me!")
# 使用按钮控件调用函数
b = tk.Button(window, text="点击执行回调函数", command=callback).pack()
# 显示窗口

这里的button.pack(),直接写在了 b 后面 .pack()

消息对话框控件

def click_button():
    # 使用消息对话框控件,showinfo()表示温馨提示
    messagebox.showinfo(title='温馨提示', message='欢迎使用C语言中文网')
# 点击按钮时执行的函数
button = tk.Button(window,text='点击前往',bg='#7CCD7C',width=20, height=5,command=click_button).pack()

showinfo()表示温馨提示

messagebox消息对话框

案例设置登陆退出窗口

win.resizable(0,0) # 禁止调整窗口大小

# 放置文字标签分别布置在第一行、第二行
tk.Label(win, text="账号:").grid(row=0, column=0)
tk.Label(win, text="密码:").grid(row=1, column=0)
# 创建输入框控件
e1 = tk.Entry(win)
# 以 * 的形式显示密码
e2 = tk.Entry(win,show='*')
e1.grid(row=0, column=1, padx=10, pady=5) # padx和pady是控制控件周围的空白区域
e2.grid(row=1, column=1, padx=10, pady=5)
# 编写一个简单的回调函数
def login():
    messagebox.showinfo('欢迎您到来')
# 使用 grid()的函数来布局,并控制按钮的显示位置
tk.Button(win, text="登录", width=10, command=login).grid(row=3, column=0, sticky="w", padx=10, pady=5)
tk.Button(win, text="退出", width=10, command=win.quit).grid(row=3, column=1, sticky="e", padx=10, pady=5)
win.mainloop()

Entry 控件

允许用户输入内容,从而实现 GUI 程序与用户的交互

Text 文本控件

text = Text(win, width=50, height=20, undo=True, autoseparators=False)
text.grid(row=4)
# INSERT 光标处插入;END 末尾处插入
text.insert(INSERT, 'C语言中文网,一个有温度的网站')
# 定义撤销和恢复方法,调用edit_undo()和 edit_redo()方法
def backout():
    text.edit_undo()
def regain():
    text.edit_redo()
# 定义撤销和恢复按钮
Button(win,text = '撤销',command = backout).grid(row=3, column=0, sticky="w", padx=10, pady=5)
Button(win,text = '恢复',command = regain).grid(row=3, column=0, sticky="e", padx=10, pady=5)
win.mainloop()

校园网数据库拼接

result_list = []
def display_accounts():
    cursor.execute("SELECT * FROM 用户 ORDER BY 剩余流量 DESC")  # 按剩余流量从大到小排序
    rows = cursor.fetchall()
    for row in rows:
        # 把所有的按照格式拼接好,放到列表中
        account_info = f"账户: {row[0]} 密码: {row[1]} 剩余流量: {row[2]}"
        print(account_info)
        # 将每一行的信息追加到主列表
        result_list.append(account_info)
        
    return result_list  # 返回提取的所有账户信息

渲染到列表

# 创建主窗口
win = Tk()
win.geometry('400x500')

# 创建列表选项,并设置列表宽度
listbox =Listbox(win,width=400)
listbox.pack()

# i表示索引值,item 表示值,根据索引值的位置依次插入
for i,item in enumerate(display_accounts()):
    print(i,item)
    listbox.insert(i,item)

Listbox控件案例

Untitled

1、创建Listbox,然后传入变量

var2 = tk.StringVar()
var2.set(("C语言辅导班", "Python答疑辅导", "Java答疑辅导", "C++辅导"))

2、建一个序列,然后将值循环添加到Listbox控件中

# 新建一个序列,然后将值循环添加到Listbox控件中
items = ["C", "Java", "Python", "C#", "Golang", "Runby"]
for i in items:
    lb.insert('end', i)  # 从最后一个位置开始加入值

3、创建按钮放置,按钮调用print_selection函数

b1 = tk.Button(window, text='获取当前选项', command=click_button)
b1.pack()

4、点击函数click_button

val = lb.get(lb.curselection()) # 获取当前选中的文本

var1.set(val) # 把选中的值放入var1中

# 创建一个按钮的点击事件
def click_button():
    # 使用 curselection来选中文本
    try:
        val = lb.get(lb.curselection()) # 获取当前选中的文本
        # 设置label值
        var1.set(val)
    except Exception as e:
        e = '发现一个错误'
        messagebox.showwarning(e,'没有选择任何条目')

实例

1、设置校园网数据库

# 连接到数据库
conn = sqlite3.connect('/Users/dcl/Desktop/demo/Mine/校园网/data.db')
cursor = conn.cursor()
result_list = []
def display_accounts():
    cursor.execute("SELECT * FROM 用户 ORDER BY 剩余流量 DESC")  # 按剩余流量从大到小排序
    rows = cursor.fetchall()
    for row in rows:
        # 把所有的按照格式拼接好,放到列表中
        account_info = f"账户: {row[0]} 密码: {row[1]} 剩余流量: {row[2]}"
        print(account_info)
        # 将每一行的信息追加到主列表
        result_list.append(account_info)
        
    return result_list  # 返回提取的所有账户信息

2、创建列表 listbox

listbox = tk.Listbox(window,width=400)
listbox.pack()

3、选中数据追加到列表

# i表示索引值,item 表示值,根据索引值的位置依次插入
for i,item in enumerate(display_accounts()):
    print(i,item)
    listbox.insert(i,item)

4、接收鼠标点击的具体选项内容

# 创建变量,用var1用来接收鼠标点击的具体选项内容
var1 = tk.StringVar()
l = tk.Label(window, bg='#B0B0B0', font=('微软雅黑', 15), width=50, textvariable=var1)
l.pack()

5、点击动作函数

# 创建一个按钮的点击事件
def click_button():
    # 使用 curselection来选中文本
    try:
        val = listbox.get(listbox.curselection()) # 获取当前选中的文本
        # 设置label值
        var1.set(val) # 把选中的值放入var1中
    except Exception as e:
        e = '发现一个错误'
        messagebox.showwarning(e,'没有选择任何条目')

特别是:val = listbox.get(listbox.curselection()) # 获取当前选中的文本

6、创建按钮放置

# 创建一个按钮并放置,点击按钮调用print_selection函数
b1 = tk.Button(window, text='获取当前选项', command=click_button)
b1.pack()
#主窗显示
window.mainloop()

标签:Python,text,Gui,window,tk,win,tkinker,button,row
From: https://www.cnblogs.com/sxdtx/p/17894720.html

相关文章

  • Python和C++之间
    编程语言编程语言创造来都是为了解决实际问题的了解一门第二,甚至第三语言。因为只有你了解了不同工具的特性,以及它们擅长解决的问题,你才能更高效地在日常工作中运用它们。为问题选择正确的语言/工具/解决方案,将能大大减少解决问题所需的工作量训练你习惯跳出一种语言或范式的......
  • Python函数
    【一】函数的定义和使用函数可以提高代码可读性方便维护函数的使用必须遵循’先定义,后调用’的原则。函数的定义就相当于事先将函数体代码保存起来,然后将内存地址赋值给函数名,函数名就是对这段代码的引用,这和变量的定义是相似的。没有事先定义函数而直接调用,就相当于......
  • 使用Python合并多个Excel文件
    合并Excel可以将多个文件中的数据合并到一个文件中,这样可以帮助我们更好地汇总和管理数据。日常工作中,合并Excel主要有以下两种需求:将多个Excel文件合并为一个文件将多个Excel工作表合并为一个工作表这篇文章将介绍如何使用第三方Python库Spire.XLSforPython实现以上两种......
  • 扫描并清除重复文件的Python脚本
    电脑里存的照片越来越多,其中有很多是重复的。如果依赖人边去一张一张对比,需要的工作量太大了。下面的Python脚本在一个目录树上递归地对所有文件作MD5校验,将重复的文件找出来。保留用户指定的文件,将多余的文件全部删除掉。#!/usr/bin/envpython3importsysimporthashlibim......
  • node调用python输出中文乱码问题
    问题描述使用node的children_process模块调用python脚本文件,出现输出信息为乱码问题//node脚本const{spawn}=require('child_process');constpythonProcess=spawn('python',['./test.python']);pythonProcess.stdout.on('data',(data)=>{......
  • Python_数据结构的应用heap
    数据结构栈-->stack队列-->queue树-->tree堆-->heap散列-->hash图-->graph图结构一般包括顶点和边邻接矩阵DAG,DirectedAcyclicGraph即「有向无环图」树树(Tree)是一种非线性的数据结构,由n个节点组成,其中每个节点都有零个或多个子节点。......
  • python数据类型元组、列表、集合、字典相互嵌套
    系统Windows10专业工作站版22H2软件python-3.9.6-amd64.exe拓展库:jupyter==1.0.0notebook==7.0.61.元组嵌套1.1元组嵌套元组try:tuple0=((1,2,3),(1,2,3),(1,2,3))print(tuple0,type(tuple0))except:print('error')((1,2,3),(1,2,3),(1,2,......
  • map(python中的字典)
    //创建一个空的map,键是字符串类型,值是整数类型myMap:=make(map[string]int)//创建有值的map//初始化并赋值myMap:=map[string]int{"apple":1,"banana":2,"orange":3,}//添加修改元素myMap["grape"]=4//添加元素myMa......
  • 【python基础之函数】--- 函数入门
    title:【python基础之函数】---函数入门date:2023-12-0818:50:06updated:2023-12-1114:30:00description:cover:https://home.cnblogs.com/u/dream-ze/函数的基本使用目前为止,借助之前的学习内容,是已经能开发一些功能简单的小程序了但随着程序功能......
  • 在自动化测试时,Python常用的几个加密算法,你有用到吗
    本文分享自华为云社区《『加密算法』|自动化测试时基于Python常用的几个加密算法实现,你有用到吗?》,作者:虫无涯。写在前边这几天做自动化测试,遇到一个问题,那就是接口的请求的密码是加密的;产品的要求是不能使用其他特殊手段,他给提供加密算法,需要在接口请求的时候,使用加密算法处......