tkinter是Python下面向tk的图形界面接口库,可以方便地进行图形界面设计和交互操作编程。tkinter的优点是简单易用、与Python的结合度好。tkinter在Python 3.x下默认集成,不需要额外的安装操作;不足之处为缺少合适的可视化界面设计工具,需要通过代码来完成窗口设计和元素布局。
本节采用的Python版本为3.x,如果想在python 2.x下使用tkinter,请通过apt-get进行安装。需要注意的是,不同Python版本下的tkinter使用方式可能略有不同,建议采用Python3。
import tkinter as tk import tkinter.scrolledtext as tkst import fileinput from tkinter import * import os import win32clipboard import tkinter.font t1 = [] root = None def die(event = None): root.destroy() def about(): messagebox.showinfo(title = "当前版本为1.0,欢迎使用",message = "**作者:韩东\n**状态:继续努力ing") #def newit(event): #editorit = editor() #editorit.neweditor() class editor(): def __init__(self,rt): if rt == None: self.t = tk.Tk() else: self.t = tk.Toplevel(rt) self.t.title("文本编辑器%d" % (len(t1)+1)) self.frm_file = tk.Frame(rt) self.frm_file.grid(row =0,column =0,padx =0,sticky = W) self.btn_open = Button(self.frm_file,text = "打开",relief = GROOVE,command = self.openfile) self.btn_open.pack(side = LEFT,padx =5,fill = BOTH,expand =1) self.btn_new = Button(self.frm_file,text = "新建",relief = GROOVE,command = self.neweditor) self.btn_new.pack(side =LEFT,padx =5,fill = BOTH) self.btn_save = Button(self.frm_file,text = "保存",relief = GROOVE,command = self.savefile) self.btn_save.pack(side = LEFT,padx =5,fill = BOTH) self.btn_saveas = Button(self.frm_file,text = "另存为",relief = GROOVE,command = self.saveasfile) self.btn_saveas.pack(side =LEFT,padx =5,fill = BOTH) self.btn_exit = Button(self.frm_file,text = "退出",relief = GROOVE,command = self.close) self.btn_exit.pack(side = RIGHT,padx =5,fill = BOTH) self.frm_edit = tk.Frame(rt) self.frm_edit.grid(row = 0 ,column =1,padx =1,sticky = W) self.btn_copy = Button(self.frm_edit,text = "复制") self.btn_copy.pack(side = LEFT,padx =5,fill = BOTH,expand =1) self.btn_cut = Button(self.frm_edit,text = "剪切") self.btn_cut.pack(side = LEFT,padx =5,fill = BOTH,expand =1) self.btn_paste = Button(self.frm_edit,text = "黏贴") self.btn_paste.pack(side = LEFT,padx =5,fill = BOTH,expand =1) self.btn_find = Button(self.frm_edit,text = "查询") self.btn_find.pack(side = LEFT,padx =5,fill = BOTH,expand =1) self.btn_allselect = Button(self.frm_edit,text = "全选") self.btn_allselect.pack(side = LEFT,padx =5,fill = BOTH,expand =1) self.btn_font = Button(self.frm_edit,text = "字体样式") self.btn_font.pack(side = LEFT,padx =5,fill = BOTH,expand =1) self.btn_color = Button(self.frm_edit,text = "字体颜色") self.btn_color.pack(side = LEFT,padx =5,fill = BOTH,expand =1) self.bar = tk.Menu(rt) self.filem = tk.Menu(self.bar) self.filem.add_separator() self.filem.add_command(label = "新建",command = self.neweditor,accelerator = " Ctr +N") self.filem.bind_all("<Control-n>",self.neweditor) self.filem.add_separator() self.filem.add_command(label = "打开",command = self.openfile,accelerator = " Ctr + O") self.filem.bind_all("<Control-o>",self.openfile) self.filem.add_separator() self.filem.add_command(label = "保存",command = self.savefile,accelerator = " Ctr +S ") self.filem.bind_all("<Control-s>",self.savefile) self.filem.add_separator() self.filem.add_command(label = "另存为",command = self.saveasfile,accelerator = " Ctr + D ") self.filem.bind_all("<Control-d>",self.saveasfile) self.filem.add_command(label = "关闭",command = self.close,accelerator = " F4") self.filem.bind_all("<F4>",self.close) self.filem.add_separator() self.filem.add_command(label = "退出",command = die,accelerator = " ESC") self.filem.bind_all("<Escape>",die) self.editm = tk.Menu(self.bar) self.editm.add_separator() self.editm.add_command(label = "复制",command = self.copy,accelerator = " "*10 + "Ctr + C") self.editm.bind_all("<Control-c>",self.copy) self.editm.add_separator() self.editm.add_command(label = "黏贴",command = self.paste,accelerator = " "*10 + "Ctr + V") self.editm.bind_all("<Control-v>",self.paste) self.editm.add_separator() self.editm.add_command(label = "剪切",command = self.cut,accelerator = " "*10 + "Ctr + X") self.editm.bind_all("<Control-x>",self.cut) self.editm.add_separator() self.editm.add_command(label = "删除",command = self.delete_text,accelerator = " "*10 + "Delete") self.editm.bind_all("<Delete>",self.delete_text) self.editm.add_separator() self.editm.add_command(label = "查找",command = self.find_char,accelerator = " "*10 + "Ctr +F") self.editm.bind_all("<Control-f>",self.find_char) self.editm.add_separator() self.editm.add_command(label = "全选",command = self.select_char_all,accelerator = " "*10 + "Ctr + A") self.editm.bind_all("<Control-a>",self.select_char_all) self.formm = tk.Menu(self.bar) self.formm.add_command(label = "字体颜色",command = self.color_it,accelerator = " "*10 + "Alt + C") self.formm.bind_all("<Alt-f>",self.color_it) self.formm.add_separator() self.formm.add_command(label = "字体格式",command = self.font_it,accelerator = " "*10 + "Alt + F") self.formm.bind_all("<Alt-f>",self.font_it) self.helpm = tk.Menu(self.bar) self.helpm.add_command(label = "关于",command = about) self.bar.add_cascade(label = "文件",menu = self.filem) self.bar.add_cascade(label = "编辑",menu = self.editm) self.bar.add_cascade(label = "格式",menu = self.formm) self.bar.add_cascade(label = "帮助",menu = self.helpm) self.t.config(menu = self.bar) #self.f = tk.Frame(self.t,width = 512) #self.f.pack(expand =1) self.st = tkst.ScrolledText(self.t) self.st.grid(row =1,column = 0,columnspan =3,pady =3) def close(self,event = None): self.t.destroy() def openfile(self,event =None): oname = filedialog.askopenfilename(filetypes = [("打开文件","*.txt")]) if oname: for line in fileinput.input(oname): self.st.insert("1.0",line) self.t.title(oname) def savefile(self,event =None): if os.path.isfile(self.t.title()): opf = open(self.t.title(),"w") opf.write(self.st.get(1.0,tk.END)) opf.flush() opf.close() else: sname = filedialog.asksaveasfilename(title = "保存好你的宝宝哟",filetypes = [("保存文件","*.txt")],defaultextension = ".txt") if sname: ofp = open(sname,"w") ofp.write(self.st.get(1.0,tk.END)) ofp.flush() ofp.close() self.t.title(sname) def saveasfile(self,event = None): sname = filedialog.asksaveasfilename(title = "保存好你的宝宝哟",filetypes = [("保存文件","*.txt")],defaultextension = ".txt") if sname: ofp = open(sname,"w") ofp.write(self.st.get(1.0,tk.END)) ofp.flush() ofp.close() self.t.title(sname) def neweditor(self,event = None): global root t1.append(editor(root)) def copy(self,event = None): text = self.st.get(tk.SEL_FIRST,tk.SEL_LAST) self.st.clipboard_clear() self.st.clipboard_append(text) def paste(self,event= None): try: text = self.st.selection_get(selection = "CLIPBOARD") self.st.insert(tk.INSERT,text) self.st.clipboard_clear() except tk.TclError: pass def cut(self,event = None): text = self.st.get(tk.SEL_FIRST,tk.SEL_LAST) self.st.delete(tk.SEL_FIRST,tk.SEL_LAST) self.st.clipboard_clear() self.st.clipboard_append(text) def delete_text(self): self.st.delete(tk.SEL_FIRST,tk.SEL_LAST) def find_char(self,event = None): target = simpledialog.askstring("简易文本编辑器","寻找字符串") if target: end = self.st.index(tk.END) print(end) endindex = end.split(".") end_line = int(endindex[0]) end_column = int(endindex[1]) pos_line =1 pos_column=0 length =len(target) while pos_line <= end_line : if pos_line == end_line and pos_column +length > end_column: break elif pos_line < end_line and pos_column + length >500: pos_line = pos_line + 1 pos_column = (pos_column + length) -500 if pos_column > end_column: break else: pos = str(pos_line)+"."+str(pos_column) where = self.st.search(target,pos,tk.END) if where: print(where) where1 =where.split(".") sele_end_col = str(int(where1[1])+length) sele = where1[0] + "."+ sele_end_col self.st.tag_add(tk.SEL,where,sele) self.st.mark_set(tk.INSERT,sele) self.st.see(tk.INSERT) self.st.focus() again = messagebox.askokcancel(title = "继续查询么") if again: pos_line = int(where1[0]) pos_column = int(sele_end_col) else: aa=messagebox.showinfo(title = "你终于还是放弃了我",message = "你放弃了我--!") if aa: sys.exit() def select_char_all(self,event= None): self.st.tag_add(tk.SEL,1.0,tk.END) self.st.see(tk.INSERT) self.st.focus() def color_it(self,event = None): color = colorchooser.askcolor() self.st["foreground"] = color[1] def font_it(self,event = None): self.t_font = tk.Toplevel() self.t_font.title("字体选择面板") self.label_size = Label(self.t_font,text = "字体大小") self.label_shape = Label(self.t_font,text = "字体形状") self.label_font = Label(self.t_font,text = "字体类型") self.label_weight = Label(self.t_font,text = "字体粗细") self.label_size.grid(row = 0 ,column =0,padx =30) self.label_shape.grid(row = 0,column =4,padx =30) self.label_font.grid(row = 0,column =2,padx =30) self.label_weight.grid(row =0,column = 6,padx =30) self.scroll_size = Scrollbar(self.t_font) self.scroll_size.grid(row =1,column=1,stick = NS) self.scroll_shape = Scrollbar(self.t_font) self.scroll_shape.grid(row =1,column=3,stick = NS) self.scroll_font = Scrollbar(self.t_font) self.scroll_font.grid(row =1,column=5,stick = NS) self.scroll_weight = Scrollbar(self.t_font) self.scroll_weight.grid(row =1,column =7,stick = NS) list_var_font = StringVar() list_var_size = StringVar() list_var_shape = StringVar() list_var_weight = StringVar() self.list_font = Listbox(self.t_font,selectmode = BROWSE,listvariable = list_var_font,exportselection =0) self.list_font.grid(row = 1,column =2,padx =4) list_font_item = ["\"Arial\"","\"Arial Baltic\"","\"Arial Black\"","\"Arial CE\"","\"Arial CYR\"","\"Arial Greek\"","\"Arial Narrow\"", "\"Arial TUR\"","\"Baiduan Number\"","\"Batang,BatangChe\""] for item in list_font_item: self.list_font.insert(0,item) self.list_font.bind("<ButtonRelease-1>",self.change_font) self.list_shape = Listbox(self.t_font,selectmode = BROWSE,listvariable =list_var_shape,exportselection =0 ) self.list_shape.grid(row= 1,column =4,padx =4) list_shape_item = ["italic","roman"] for item in list_shape_item: self.list_shape.insert(0,item) self.list_shape.bind("<ButtonRelease-1>",self.change_shape) self.list_size = Listbox(self.t_font,selectmode = BROWSE,listvariable = list_var_size,exportselection =0) self.list_size.grid(row = 1,column = 0,padx =4) list_size_item = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17] for item in list_size_item : self.list_size.insert(0,item) self.list_size.bind("<ButtonRelease-1>",self.change_size) self.list_weight = Listbox(self.t_font,selectmode = BROWSE,listvariable = list_var_weight,exportselection =0) self.list_weight.grid(row=1,column =6,padx =4) list_weight_item = ["bold","normal"] for item in list_weight_item: self.list_weight.insert(0,item) self.list_weight.bind("<ButtonRelease-1>",self.change_weight) self.labFra_display = LabelFrame(self.t_font,text = "字体样式演示区域") self.labFra_display.grid(row =2,column =0,pady =4) self.lab_display = Label(self.labFra_display,text = "我在这里") self.lab_display.pack() self.btn_ok = Button(self.t_font,text = "确定",width = 10,height =2,command = self.change) self.btn_ok.grid(row = 2,column = 2,pady =4) self.btn_cancel = Button(self.t_font,width =10,height =2,text = "取消",command = self.exit_subwindow) self.btn_cancel.grid(row =2,column =4,pady =4) def change_size(self,event): tk.customFont = font.Font(family = "Helvetica",size = 12,weight = "normal",slant = "roman",underline =0) size = tk.customFont["size"] tk.customFont.configure(size =self.list_size.get(self.list_size.curselection())) self.st.config(font = tk.customFont) self.size_count = 1 pass def change_font(self,event): tk.customFont = font.Font(family = "Helvetica",size = 12,weight = "normal",slant = "roman",underline =0) family = tk.customFont["family"] tk.customFont.configure(family =self.list_font.get(self.list_font.curselection())) self.st.config(font = tk.customFont) self.font_count = 1 pass def change_shape(self,event): tk.customFont = font.Font(family = "Helvetica",size = 12,weight = "normal",slant = "roman",underline =0) slant = tk.customFont["slant"] tk.customFont.configure(slant =self.list_shape.get(self.list_shape.curselection())) self.st.config(font = tk.customFont) self.shape_count =1 pass def change_weight(self,event): tk.customFont = font.Font(family = "Helvetica",size = 12,weight = "normal",slant = "roman",underline =0) weight = tk.customFont["weight"] tk.customFont.configure(weight =self.list_weight.get(self.list_weight.curselection())) self.st.config(font = tk.customFont) self.shape_count =1 def change(self,event): pass #self.st["font"] = (self.list_size.get(self.list_size.curselection())) #self.st["font"] = (self.list_font.get(self.list_font.curselection())) #self.st["font"] = (self.list_shape.get(self.list_shape.curselection())) def exit_subwindow(self): self.t_font.destroy() if __name__ == "__main__": root = None t1.append(editor(root)) root = t1[0].t root.mainloop()
以上就是本文给大家分享的代码了,希望大家能够喜欢

在图形用户界面(GUI)中处理层次数据时,通常需要以结构化和有组织的方式显示数据。Python-Tkinter中的Treeview小部件提供了一种以用户友好的方式呈现层次数据的强大解决方案。然而,随着Treeview中项目的数量增加,包含滚动条以确保平滑的导航和可用性变得至关重要。首先,请确保您的系统上安装了Python和Tkinter。推荐使用Python3以提高兼容性和功能。如果您没有安装Tkinter,可以使用Python软件包管理器pip轻松安装它。打开您的终端或命令提示符,并运行以下命

这两张图片是截取官网上提供的展示效果图:主题切换简单的主题切换,由于当前窗口上组件很少,所以感觉效果不明显,但是当组件布局很多时就会很好看。importttkbootstrapasttkfromttkbootstrap.constantsimport*root=ttk.Window()style=ttk.Style()theme_names=style.theme_names()#以列表的形式返回多个主题名theme_selection=ttk.Frame(root,padding=(10,10

Tkinter,apopularGUItoolkitforPython,offersaplethoraoftoolstodesignintuitiveandinteractiveinterfaces,amongthese,thePlace_forget()methodstandsoutasapowerfultoolfordynamicGUIlayoutmanipulation.Thismethodenablesdeveloperstoeffortlesslyhideorremovewidgets

1、Frame的tkraise()方法介绍通常,一个Tkinter应用程序由多个Frame组成。而且您经常需要在Frame之间切换以显示与用户选择相关的Frame。Tkinter允许将Frame堆叠在一起。要显示特定Frame,只需按堆叠顺序将一个放在另一个之上。顶部Frame将可见。要将Frame置于顶部,可以使用Frame小部件的tkraise()方法,如下所示:frame.tkraise()2、tkraise用法示例下面将实现一个温度转换小应用,华氏温度和摄氏温度分别使用两个不同的Fram

图形用户界面(GUI)图形用户界面(GUI)只不过是一个桌面应用程序,可帮助我们与计算机进行交互像文本编辑器这样的GUI应用程序可以创建、读取、更新和删除不同类型的文件数独、国际象棋和纸牌等应用程序则是游戏版的GUI程序还有GoogleChrome、Firefox和MicrosoftEdge之类的GUI应用程序是用来浏览Internet的这些都是我们日常在电脑上使用的一些不同类型的GUI应用程序,其实我们通过Tkinter也是可以构建简单的类似应用程序的今天我们作为GUI的入门,将创建一个非常简

尽管Python提供了多个消息框已经能够满足大部分正常人的需求,但并不够灵活,所以有的时候不得不自定义消息框。新建窗口消息框的本质是一个窗口、一段信息,外加两个按钮importtkinterastkFONT=("微软雅黑",20)defmsgBox(txt,yesFunc=None,noFunc=None):win=tk.Tk()win.title("started")win.geometry("400x200+300+100")lab

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

pythonGUI编程简述GUI(GraphicalUserInterface,图形用户界面)是一种允许用户通过图形方式与计算机交互的方式。GUI编程是指使用编程语言来创建图形用户界面。Python是一种流行的编程语言,它提供了丰富的GUI库,使得PythonGUI编程变得非常简单。PythonGUI库介绍Python中有许多GUI库,其中最常用的有:Tkinter:Tkinter是Python标准库中自带的GUI库,它简单易用,但功能有限。PyQt:PyQt是一个跨平台的GUI库,它功能强大,


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

Dreamweaver Mac版
Alat pembangunan web visual