tkinter如何将一个部件透明??

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tkinter如何将一个部件透明??相关的知识,希望对你有一定的参考价值。

tkinter中我将一个CANVAS作为背景,然后在其上加入一个TEXT的组件 我想将TEXT设为透明的 该如何做………………有没有可能达成??求助!!

好难看啊 我想讲那个text 的组件透明化
这是代码 python3的

# -*- coding:utf-8 -*-# -*- coding: encoding -*-#coding:gbk
import tkinter as tkimport tkinter.filedialog as fldioimport tkinter.font as ftfrom PIL import Image,ImageTkimport tkinter.messagebox as ms
class My_GUI: def __init__(self): self.wn=tk.Tk() self.wn.resizable(0,0) self.wel_wn() #打开欢迎界面 self.wn.mainloop()
def wel_wn(self): #建立欢迎界面 self.whole_canvas()
def open_image(self,path): """该函数用于打开图片""" self.imagefile=Image.open(path) self.image=ImageTk.PhotoImage(self.imagefile) return self.image
def set_input(self): """该函数用于建立输入文本框""" self.inputframe=tk.Frame() self.lblframe1=tk.LabelFrame(self.inputframe,text='Here is the input:',font=('Lucida Calligraphy',13)) self.lblframe1.grid(row=1,column=0,columnspan=2,sticky=tk.W+tk.E) self.inputtext=tk.Text(self.lblframe1,width=40,height=30) self.inputtext.grid(row=0,column=0,columnspan=3,sticky=tk.W+tk.E) self.inputscr=tk.Scrollbar(self.lblframe1,command=self.inputtext.yview) self.inputtext['yscrollcommand'] = self.inputscr.set self.inputscr.grid(row=0,column=3,sticky=tk.W+tk.S+tk.N)
def whole_canvas(self): self.wholecanvas=tk.Canvas(self.wn,width=1000,height=625) self.wholecanvas.pack() self.wholecanvas.create_image((500,312.5),image=self.open_image('C:/Users/gj/Desktop/新建文件夹/bg.jpg')) self.set_input() self.wholecanvas.create_window((219,293),window=self.inputframe)

app=My_GUI()

Tkinter 只能将整个窗口变成透明的,不能单个组件。
整个窗口透明这样写:
root.attributes("-alpha",0.5)
0.5 是透明度从0-1,1是不透明,0是全透明。
参考技术A 用PIL在背景图片中截一块放到Text里做背景

如何将Tkinter Text小部件的撤消/重做历史记录复制到另一个小部件中

我使用Python 3.6.5获得了一个基于Tkinter的GUI程序。

我有一个临时窗口,里面有一些Text小部件(和其他东西)。临时窗口关闭时整个窗口被破坏。但是,我想在下次打开(并重新构建)时保留撤消/重做历史记录以及某些特定Text小部件中的任何文本。以另一种方式重新编程当然是可能的,但考虑到事情的设置,可能是一项不必要的大量工作(尽管如果你有想法,无论设置如何都应该有效,请随时告诉我)。更改设置可能很容易引入错误。

具有不同小部件的两个不同窗口需要在一些类似小部件之间共享数据(并且我想扩展它以包括undo-redo历史)。我相信不同的父母是窗户被毁坏的一部分,但我可能是错的(可能还有其他原因)。

无论如何,我想知道,文本小部件的撤消/重做历史存储在哪里?如果我可以在窗口关闭之前以某种方式复制它并将其放入新构建的窗口小部件(构建它的任何窗口),那将是很好的。

我正在添加tk标签,因为我查看了tkinter的Python源代码,并没有找到任何特别有用的东西(所以也许那些使用TCL或者其他人会知道)。

我意识到可能无法访问存储历史记录的变量,但我认为值得询问,以防万一。

答案

不,您无法保存文本窗口小部件的撤消/重做历史记录,销毁窗口小部件,然后将历史记录重新应用到新窗口小部件。

最好的解决方案是不破坏小部件。只需隐藏它然后重新显示它而不是破坏它并重新创建它。

以上是关于tkinter如何将一个部件透明??的主要内容,如果未能解决你的问题,请参考以下文章

Tkinter:如何将文本小部件中输入的文本保存到新窗口中?

如何将捕获的输入从 tkinter 条目小部件写入 json 文件

如何从Tkinter,Python中的Text小部件中移除焦点

单击时如何将按钮值从自定义小部件传递到 tkinter 中的主应用程序

如何将文件位置存储到条目窗口小部件中--Tkinter

如何将Tkinter Text小部件的撤消/重做历史记录复制到另一个小部件中