狗剩学python:基本概念笔记(六)

五、tkinter图形界面(二)

总要坚持一些事情~

12、树状表格

import tkinter
from tkinter import ttk

root = tkinter.Tk()

root.title("Menu菜单右键")

root.geometry("800x400+150+150")

tree = ttk.Treeview(root)
tree.pack()

tree["columns"] = ("姓名", "年龄", "身高", "体重")

tree.column("姓名", width=100)
tree.column("年龄", width=100)
tree.column("身高", width=100)
tree.column("体重", width=100)

tree.heading("姓名", text="姓名-name")
tree.heading("年龄", text="年龄-age")
tree.heading("身高", text="身高-height")
tree.heading("体重", text="体重-weight")

tree.insert("", 0, text="line1", values=("孙畅", "27", "170", "160"))

root.mainloop()


13、树状数据

from tkinter import ttk

root = tkinter.Tk()

root.title("树状数据")

root.geometry("300x300+150+150")

tree = ttk.Treeview(root)

tree.pack()

treeF1 = tree.insert("", 0, "中国", text="中国CN", values=("F1"))
treeF2 = tree.insert("", 1, "俄国", text="俄国RU", values=("F2"))
treeF3 = tree.insert("", 2, "法国", text="法国FR", values=("F3"))
treeF4 = tree.insert("", 3, "美国", text="美国US", values=("F4"))
treeF5 = tree.insert("", 4, "英国", text="英国EN", values=("F5"))


treeF1_1_1 = tree.insert(treeF1, 0, "吉林", text="吉林", values=("F1_1_1"))
treeF1_1_2 = tree.insert(treeF1, 0, "辽宁", text="辽宁", values=("F1_1_2"))
treeF1_1_3 = tree.insert(treeF1, 0, "黑龙江", text="黑龙江", values=("F1_1_3"))

treeF1_2_1 = tree.insert(treeF1_1_1, 0, "长  春", text="长  春", values=("F1_2_1"))
treeF1_2_2 = tree.insert(treeF1_1_2, 0, "沈  阳", text="沈  阳", values=("F1_2_2"))
treeF1_2_3 = tree.insert(treeF1_1_3, 0, "哈尔滨", text="哈尔滨", values=("F1_2_3"))



root.mainloop()

14、右键菜单(menubar形式)

import tkinter


root = tkinter.Tk()

root.title("Menu右键菜单")

root.geometry("300x300+150+150")

menubar = tkinter.Menu(root)

menu = tkinter.Menu(menubar, tearoff=False)

language = ["C", "C++", "Java", "Python", "php", "JS", "退出"]

for item in language:
    menu.add_command(label=item)

menubar.add_cascade(label="语言", menu=menu)

def showMenu(event):
    menubar.post(event.x_root, event.y_root)

root.bind("<Button-3>",  showMenu)

root.mainloop()

15、combobox

import tkinter

from tkinter import ttk

root = tkinter.Tk()

root.title("combobox控件")

root.geometry("300x300+150+150")

v = tkinter.StringVar()

com = ttk.Combobox(root, value=("河南", "河北", "山东"), textvariable=v)

com.current(0)

def func(event):
    print(com.get())

com.bind("<<ComboboxSelected>>", func)

com.pack()


root.mainloop()

16、frame控件

import tkinter

root = tkinter.Tk()

root.title("Frame控件")

root.geometry("300x300+150+150")

frm = tkinter.Frame(root)

frm.pack()

frm_1 = tkinter.Frame(frm)

tkinter.Label(frm_1, text="左上", bg="pink").pack(side=tkinter.TOP)

tkinter.Label(frm_1, text="左下", bg="blue").pack(side=tkinter.TOP)

frm_1.pack(side=tkinter.LEFT)


frm_2 = tkinter.Frame(frm)

tkinter.Label(frm_2, text="右上", bg="black").pack(side=tkinter.TOP)

tkinter.Label(frm_2, text="右下", bg="red").pack(side=tkinter.TOP)

frm_2.pack(side=tkinter.LEFT)


root.mainloop()


17、绝对布局

import tkinter

root = tkinter.Tk()

root.title("绝对布局")

root.geometry("300x300+150+150")

label_1 = tkinter.Label(root, text="good", bg="blue")
label_2 = tkinter.Label(root, text="nice", bg="red")
label_3 = tkinter.Label(root, text="cool", bg="brown")


label_1.place(x=10, y=10)
label_2.place(x=50, y=50)
label_3.place(x=200, y=200)


root.mainloop()

18、绝对布局

import tkinter

root = tkinter.Tk()

root.title("绝对布局")

root.geometry("300x300+150+150")

label_1 = tkinter.Label(root, text="good", bg="blue")
label_2 = tkinter.Label(root, text="nice", bg="red")
label_3 = tkinter.Label(root, text="cool", bg="brown")


label_1.place(x=10, y=10)
label_2.place(x=50, y=50)
label_3.place(x=200, y=200)


root.mainloop()

19、相对布局

import tkinter

root = tkinter.Tk()

root.title("绝对布局")

root.geometry("300x300+150+150")

label_1 = tkinter.Label(root, text="good", bg="blue")
label_2 = tkinter.Label(root, text="nice", bg="red")
label_3 = tkinter.Label(root, text="cool", bg="brown")


label_1.pack(fill=tkinter.Y, side=tkinter.LEFT)
label_2.pack(fill=tkinter.X, side=tkinter.TOP)

label_3.pack(fill=tkinter.X, side=tkinter.RIGHT)


root.mainloop()

20、表格布局

import tkinter

root = tkinter.Tk()

root.title("绝对布局")

root.geometry("300x300+150+150")

label_1 = tkinter.Label(root, text="good", bg="blue")
label_2 = tkinter.Label(root, text="nice", bg="red")
label_3 = tkinter.Label(root, text="cool", bg="brown")
label_4 = tkinter.Label(root, text="awsome", bg="yellow")


label_1.grid(row=0, column=0)
label_2.grid(row=0, column=1)
label_3.grid(row=1, column=0)
label_4.grid(row=1, column=1)


root.mainloop()

21、鼠标点击

import tkinter

root = tkinter.Tk()

root.title("绝对布局")

root.geometry("300x300+150+150")

button_1 = tkinter.Button(root, text="leftmouse button")
button_2 = tkinter.Button(root, text="leftmouse button")
label_1 = tkinter.Label(root, text="好男人就是我,我就是狗小剩")
label_2 = tkinter.Label(root, text="好男人就是我,我就是狗小剩2")




def func(event):
    print(event.x, event.y)


button_1.bind("<Double-Button-1>", func)
button_1.pack()


button_2.bind("<Enter>", func)
button_2.bind("<Leave>", func)
button_2.pack()

label_1.bind("<B1-Motion>", func)
label_1.pack()

label_2.bind("<ButtonRelease-1>", func)
label_2.pack()


root.mainloop()

22、响应按键

import tkinter

root = tkinter.Tk()

root.title("绝对布局")

root.geometry("300x300+150+150")





def func(event):
    print("event.char=", event.char)
    print("event.keycode=", event.keycode)


#root.bind("<a>", func)
root.bind("<Key>", func)


root.mainloop()

23、radiobutton控件

import tkinter

root = tkinter.Tk()
"""
v=IntVar()
r = Radiobutton(root, text='刘诗诗', variable=v, value=1).pack(anchor=W)
r = Radiobutton(root, text='袁泉', variable=v, value=2).pack(anchor=W)
r = Radiobutton(root, text='韩雪', variable=v, value=3).pack(anchor=W)
"""
Girls=['刘诗诗','袁泉','韩雪']
v = tkinter.IntVar()
i = 1
for girl in Girls:
    r = tkinter.Radiobutton(root, text=girl, variable=v, value=i)
    #必须要又value值才能
    r.pack(anchor=tkinter.W)
root.mainloop()

#checkbutoon 多选,radiobutton单选

———tk作业:树状图列出文件———

1.infoWindows

import tkinter

import  os

from tkinter import ttk

class InfoWindows(tkinter.Frame):
    def __init__(self, master):
        frame = tkinter.Frame(master)
        frame.grid(row=0, column=1)

        self.ev = tkinter.Variable()
        self.entry = tkinter.Entry(frame, textvariable=self.ev)
        self.entry.pack()

        self.txt = tkinter.Text(frame)
        self.txt.pack()

2、treeFile

import tkinter
import os
from infoWindows import InfoWindows
from treeWindows import TreeWindows

import tkinter.messagebox

root = tkinter.Tk()

root.title("树状图")

#root.geometry("400x400+150+150")

path = r"D:\study\python\base_run"


infoWin = InfoWindows(root)
treeWin = TreeWindows(root, path, infoWin)
root.mainloop()

3、treeWindows

import tkinter
import os
from tkinter import ttk
import tkinter.messagebox

class TreeWindows(tkinter.Frame):
    def __init__(self, master, path, otherWin):
        frame = tkinter.Frame(master)
        frame.grid(row=0, column=0)
        self.tree = ttk.Treeview(frame)
        self.tree.pack(side=tkinter.LEFT, fill=tkinter.Y)
        tempPath = self.getListPath(path)
        root_tree = self.tree.insert("", "end", text=tempPath, open=True, values=(path))
        self.loadTree(root_tree, path)
        self.sy = tkinter.Scrollbar(frame)
        self.sy.pack(side=tkinter.RIGHT, fill=tkinter.Y)
        self.sy.config(command=self.tree.yview)
        self.tree.config(yscrollcommand=self.sy.set)
        self.tree.bind("<<TreeviewSelect>>", self.func)
        self.otherWin = otherWin

    def func(self, event):
        self.otherWin.txt.delete(1.0, tkinter.END)
        self.v = event.widget.selection()
        for sv in self.v:
            file = self.tree.item(sv)["text"]
            self.otherWin.ev.set(file)
            aPath =self.tree.item(sv)["values"][0]
            print(aPath)
            try:
                with open(aPath) as f:
                    for each_line in f:
                        self.otherWin.txt.insert(tkinter.INSERT, each_line)
                f.close()
            except OSError as reason:
                tkinter.messagebox.showinfo('提示',"%s文件无法打开"% aPath)
                print('这是一个文件夹' + str(reason))

    def loadTree(self, parent, parentPath):
        for fileName in os.listdir(parentPath):
            self.absPath = os.path.join(parentPath, fileName)
            treey = self.tree.insert(parent, "end", text=self.getListPath(self.absPath), values=(self.getAbsPath(self.absPath)))
            if os.path.isdir(self.absPath):
                self.loadTree(treey, self.absPath)


    def getListPath(self, path):
        self.pathList = os.path.split(path)
        return self.pathList[-1]
    def getAbsPath(self,path):
        absFile = ""
        allPath = path.split("\\")
        numb = len(allPath)-1
        for i in range(numb):
            absFile =absFile+allPath[i]+'\\\\'
        absFile = absFile+self.pathList[-1]
        return absFile

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值