Python自習-class15-UIインターフェースの設計とアプリケーションの強化

1.インターフェースの最適化:
画像の挿入:

#coding=gbk
import tkinter

win = tkinter.Tk()
photo = tkinter.PhotoImage(file=r"D:\壁纸\游戏\1.gif")
label = tkinter.Label(win,text="芜湖",image=photo)
label.pack()
win.mainloop()

ちょっとした質問:python3は.gifしか挿入できず、.jpgは挿入できず、.gifを挿入した後の実際の表示は静的であることがわかりました。誰かがそれに答えられるかどうか疑問に思います。
フォントを設定します。

import tkinter

win = tkinter.Tk()
label = tkinter.Label(win,text="UI界面",
                      font=("华文彩云",80),
                      fg="yellow",
                      bg="blue") #字体类型,大小,字体颜色,背景
label.pack()
win.mainloop()

2.インターフェースレイアウト:
絶対レイアウト:

import tkinter
win = tkinter.Tk()
label1 = tkinter.Label(win,text="1234",bg="blue")
label2 = tkinter.Label(win,text="1234",bg="yellow")
label3 = tkinter.Label(win,text="1234",bg="red")

#坐标位置的绝对布局,窗口位置大小不影响布局
label1.place(x=10,y=10)
label2.place(x=50,y=50)
label3.place(x=100,y=100)
'''
label1.place(x=10,y=10,anchor=tkinter.SE)
label2.place(x=50,y=50,anchor=tkinter.SE)
label3.place(x=100,y=100,anchor=tkinter.SE)
'''
win.mainloop()

相対レイアウト:

import tkinter
win = tkinter.Tk()
label1 = tkinter.Label(win,text="1234",bg="blue")
label2 = tkinter.Label(win,text="1234",bg="yellow")
label3 = tkinter.Label(win,text="1234",bg="red")

label1.pack(fill=tkinter.Y,side=tkinter.LEFT) #fill,窗口变化,y同步变化
label2.pack()
label3.pack()
win.mainloop()

さらに、テーブルレイアウトがあります。これらのタイプのレイアウトは非常に混乱します。将来それらを使用する場合は、慎重に検討する必要があります。3。
バインディングイベント:
マウスイベント:

import tkinter
def call(event):
    print(event.x,event.y)  #显示鼠标位置
win = tkinter.Tk()
frame = tkinter.Frame(win,width=200,height=200) #框架,限定范围,不显示
frame.bind("<Button-1>",call)#鼠标左键
frame.bind("<Button-3>",call)#鼠标右键
frame.pack()
win.mainloop()

キーボードイベント:

import tkinter
def call(event):
    print(event.keysym)  #显示键盘值
win = tkinter.Tk()
frame = tkinter.Frame(win,width=200,height=200) #框架,限定范围,不显示
frame.bind("<Key>",call)  #激发函数
frame.focus_set()   #获取焦点
frame.pack()
win.mainloop()

ウィンドウ内のマウスの位置を監視します。

import tkinter
def call(event):
    print(event.x,event.y)  #显示鼠标位置
win = tkinter.Tk()
frame = tkinter.Frame(win,width=200,height=200) #框架,限定范围,不显示
frame.bind("<Motion>",call)#鼠标位置
frame.pack()
win.mainloop()

4.グラフィカルプログラミング(最後にデータ検索の視覚化が深化に基づいている場合)は、
主に保存を追加し、3つの(リスト、テーブル、テキスト)検索方法の選択
1)入力表示機能(inputview):

#coding=gbk
import tkinter
from tkinter import ttk
import 图形化编程.BigDataFind
import 图形化编程.BigDataSave
class InputView:
    def __init__(self):
        self.win = tkinter.Tk()
        self.win.geometry("800x800+300+0")   #设置界面大小及位置

        self.entry = tkinter.Entry(self.win)  #导入文本框
        self.entry.place(x=0,y=0)
        self.button1 = tkinter.Button(self.win,text = "搜索",command = self.search)  #导入搜索键,command表示绑定search的行为
        self.button1.place(x=200,y=0)
        self.frame = tkinter.Frame(self.win)  # 框架,限定范围,不显示
        self.frame.bind("<Key>", self.call)  # 激发函数
        self.frame.focus_set()  # 获取焦点
        self.frame.pack()
        self.button2 = tkinter.Button(self.win,text = "保存",command = self.save)  #导入搜索键,command表示绑定search的行为
        self.button2.place(x=300,y=0)

        self.comvalue = tkinter.StringVar()  # 窗体自带文本,新建一个值
        self.comboxlist = ttk.Combobox(self.win, textvariable=self.comvalue,width=100)  # 初始化
        self.comboxlist["values"] = ("listshow", "testshow", "tableshow")
        self.comboxlist.current(0)  # 选择第一个
        self.comboxlist.bind("<<ComboboxSelected>>", self.go)  # 绑定事件与函数
        self.comboxlist.place(x=0,y=50)
        self.howtoshow="listshow"

        self.comvaluefile = tkinter.StringVar()  # 窗体自带文本,新建一个值
        self.comboxlistfile = ttk.Combobox(self.win, textvariable=self.comvaluefile,width=100)  # 初始化
        self.comboxlistfile["values"] = (r"D:\Python代码\class15\图形化编程\txm.txt",
                                         r"D:\Python代码\class15\图形化编程\bigdata.txt",
                                         r"D:\Python代码\class15\图形化编程\tmy.txt")
        self.comboxlistfile.current(0)  # 选择第一个
        self.comboxlistfile.bind("<<ComboboxSelected>>", self.filego)  # 绑定事件与函数
        self.comboxlistfile.place(x=0,y=80)
        self.howtoshowfile=r"D:\Python代码\class15\图形化编程\txm.txt"

    def go(self,*args):
        self.howtoshow=self.comboxlist.get()  #保存选中的值

    def filego(self, *args):
        self.howtoshowfile = self.comboxlistfile.get()  # 保存选中的值

    def call(self,event):
        print(event.keysym)
        if(event.keysym=="return"):
            self.search()

    def search(self):
        print("start search",self.entry.get())  #在运行窗口输出搜索的内容
        big=图形化编程.BigDataFind.bigdatafind(self.howtoshowfile,self.howtoshow)
        big.find(self.entry.get())
        big.show()
    def save(self):
        print("start search",self.entry.get())  #在运行窗口输出搜索的内容
        big=图形化编程.BigDataSave.bigdatasave(self.howtoshowfile,self.howtoshow)
        big.save(self.entry.get())
        big.show()
    def show(self):
        self.win.mainloop()

inputs=InputView()
inputs.show()

2)データ検索機能(BigDataFind):

#coding=gbk
import codecs   #数据编码解码
import 图形化编程.ListShow
import 图形化编程.TableShow
import 图形化编程.TextShow
class bigdatafind:
    def __init__(self,path,howtoshow):
        self.file = codecs.open(path,"rb","GBK","ignore")  #打开文件
        self.howtoshow = howtoshow
        self.showview = None  #窗体——创建

        if self.howtoshow=="listshow":
            self.showview=图形化编程.ListShow.Listshowdata()
        elif self.howtoshow=="textshow":
            self.showview=图形化编程.TextShow.Testshowdata()
        else:
            self.showview=图形化编程.TableShow.Tableshowdata()

    def find(self,searchstr):
        while True:
            line = self.file.readline()  #按行读入
            if line.find(searchstr) != -1:  #非空则显示
                print(line,end="")  #显示数据
                #插入
                if self.showview != None:
                    self.showview.addata(line)  # 显示窗体

            if not line:  #没有数据即退出
                break

    def show(self):
        if self.showview != None:
            self.showview.show()  #显示窗体
    def __del__(self):
        self.file.close()
'''
#test
big = bigdatafind("D:\\Python代码\\class15\\图形化编程\\bigdata.txt","show")
big.find("txm")
big.show()
'''

4)データ保存機能(BigDataSave):

#coding=gbk
import codecs   #数据编码解码
import 图形化编程.ListShow
import 图形化编程.TableShow
import 图形化编程.TextShow
class bigdatasave:
    def __init__(self,path,howtoshow):
        self.file = codecs.open(path,"rb","GBK","ignore")  #打开文件
        self.howtoshow = howtoshow
        self.showview = None  #窗体——创建

        if self.howtoshow=="listshow":
            self.showview=图形化编程.ListShow.Listshowdata()
        elif self.howtoshow=="textshow":
            self.showview=图形化编程.TextShow.Testshowdata()
        else:
            self.showview=图形化编程.TableShow.Tableshowdata()

    def save(self,searchstr):
        baconFile = open(searchstr+'.txt', 'w')
        while True:
            line = self.file.readline()  #按行读入
            if line.find(searchstr) != -1:  #非空则显示
                baconFile.write(line)
                if self.showview != None:
                    self.showview.addata(line)  # 显示窗体
            if not line:  #没有数据即退出
                baconFile.close()
                break

    def show(self):
        if self.showview != None:
            self.showview.show()  #显示窗体
    def __del__(self):
        self.file.close()

5)3つの表示関数(ListShow、TableShow、TextShow):

import tkinter
class Listshowdata:
    def __init__(self):
        self.win=tkinter.Tk() #构造窗体
        self.win.geometry("800x800+300+0")   #搜索数据显示窗口
        self.mylist=tkinter.Listbox(self.win,width=200 )  #列表框
        self.mylist.pack()
    def addata(self,inserstr):
        self.mylist.insert(tkinter.END,inserstr)
        pass
    def show(self):
        self.win.mainloop()
#coding=gbk
import tkinter
from tkinter import ttk
class Tableshowdata:
    def __init__(self):
        self.win=tkinter.Tk() #构造窗体
        self.win.geometry("800x800+300+0")   #搜索数据显示窗口
        self.tree = ttk.Treeview(self.win)   #表格
        self.tree.pack()
        self.idnum=0  #标志插入的位置

        self.tree["columns"] = ("user","password","email")
        self.tree.column("user",width=200)  #表示列,不显示
        self.tree.column("password",width=200)
        self.tree.column("email",width=200)

        self.tree.heading("user",text="CSDN-name")  #显示表头
        self.tree.heading("password",text="CSDN-password ")
        self.tree.heading("email",text="CSDN-email")

    def addata(self,inserstr):  #数据插入
        datalist = inserstr.split(" # ")
        if len(datalist)==3:
            self.tree.insert("",self.idnum,text="line"+str(self.idnum+1),values=(datalist[0],datalist[1],datalist[2]))#插入的行数
            self.idnum+=1

    def show(self):
        self.tree.pack()
        self.win.mainloop()
#coding=gbk
import tkinter
class Testshowdata:
    def __init__(self):
        self.win=tkinter.Tk() #构造窗体
        self.win.geometry("800x800+300+0")   #搜索数据显示窗口
        self.text=tkinter.Text(self.win)  #文本编辑器
        self.text.pack()
    def addata(self,inserstr):
        self.text.insert(tkinter.INSERT,inserstr)
        pass
    def show(self):
        self.win.mainloop()

実行効果:
検索をクリックして取得し、
ここに画像の説明を挿入
保存をクリックしてtxm0.txtとして保存します
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_46837674/article/details/113249276