我正在尝试编写一个将字符串参数复制到剪贴板的函数.我打算在我一直在研究的Python脚本中使用它.这是我到目前为止(在另一个堆栈溢出帖子上发现大多数这个片段):
from tkinter import Tk
def copy_to_clipboard(text):
text = str(text)
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append(text)
r.destroy()
Run Code Online (Sandbox Code Playgroud)
我的问题是,当脚本停止时,复制的文本不再在剪贴板上.
有没有可能的替代或解决方案?
我的问题有一个很好的平台独立解决方案吗?或者我是否必须检查用户所使用的操作系统并从那里开始?
我一直在用Tkinter和Tix写一个小程序.我正处于需要带有复选框(检查按钮)的树视图的位置,因此我可以从树视图中选择项目.是否有捷径可寻?我一直在看ttk.Treeview(),它看起来很容易得到树视图,但有没有办法在视图中插入一个检查按钮?
一个简单的代码片段将非常感激.
我不仅限于ttk.什么都行; 只要我有一个示例或好的文档,我就可以使它工作
该方法get_pos应该抓住用户在条目中输入的内容.当get_pos被执行时,它返回一个:
TypeError:必须使用app instance作为第一个参数调用unbound方法get_pos()(没有任何内容)
码:
class app(object):
def __init__(self,root):
self.functionframe=FunctionFrame(root, self)
self.functionframe.pack(side=BOTTOM)
def get_pos(self):
self.functionframe.input(self)
class FunctionFrame(Frame):
def __init__(self,master,parent):
Frame.__init__(self,master,bg="grey90")
self.entry = Entry(self,width=15)
self.entry.pack
def input(self):
self.input = self.entry.get()
return self.input
Run Code Online (Sandbox Code Playgroud) 我是Python新手并试图用tkinter编写程序.为什么下面的Hello函数被执行了?据我了解,回调只会在按下按钮时执行?我很迷茫...
>>> def Hello():
print("Hi there!")
>>> hi=Button(frame,text="Hello",command=Hello())
Hi there!
>>>
Run Code Online (Sandbox Code Playgroud) 我和朋友正在玩游戏.我们希望将一个pygame窗口嵌入到tkinter或WxPython框架中,以便我们可以包含WX或Tkinter支持的文本输入,按钮和下拉菜单.我已经在互联网上搜索了答案,但我发现所有人都在问同样的问题,这些都没有得到很好的回答.
实现嵌入到tkinter或WX帧中的pygame显示的最佳方法是什么?(TKinter更好)
将这些功能与pygame显示一起包含的任何其他方式也可以.
如何使用in Tkinter 创建超链接Label?
快速搜索没有透露如何做到这一点.相反,只有在Text小部件中创建超链接的解决方案.
所以我正在使用tkinter库创建一个rss阅读器,在我的一个方法中,我创建了一个文本小部件.它显示正常,直到我尝试向其添加滚动条.
这是滚动条前的代码:
def create_text(self, root):
self.textbox = Text(root, height = 10, width = 79, wrap = 'word')
self.textbox.grid(column = 0, row = 0)
Run Code Online (Sandbox Code Playgroud)
这是我的代码之后:
def create_text(self, root):
self.textbox = Text(root, height = 10, width = 79, wrap = 'word')
vertscroll = ttk.Scrollbar(root)
vertscroll.config(command=self.textbox.yview)
vertscroll.pack(side="right", fill="y", expand=False)
self.textbox.config(yscrllcommand=vertscroll.set)
self.textbox.pack(side="left", fill="both", expand=True)
self.textbox.grid(column = 0, row = 0)
Run Code Online (Sandbox Code Playgroud)
这给了我错误
_tkinter.TclError:不能在.56155888里面使用几何管理器包,它已经有一行由网格管理的子行在vertscroll.pack(side ="right",fill ="y",expand = False)
任何想法如何解决这一问题?
从effbot.org文档中,我们有关于该update功能的以下内容:
处理所有挂起事件,调用事件回调,完成任何挂起的几何管理,根据需要重绘小部件,以及调用所有挂起的空闲任务.应谨慎使用此方法,因为如果从错误的位置(例如,从事件回调中调用,或者从可以以任何方式从事件回调调用的函数等)调用它,可能会导致非常讨厌的竞争条件).如有疑问,请
update_idletasks改用.
另一方面,这是关于update_idletasks功能:
调用所有待处理的空闲任务,而不处理任何其他事件.这可用于在必要时执行几何管理和重绘小部件,而无需调用任何回调.
据我所知,两者都调用所有挂起的空闲任务,完成任何挂起的几何管理并根据需要重绘小部件.我看到的唯一区别是update 处理所有挂起事件并调用事件回调.update我想这就是为什么我们不应该在一个甚至回调中打电话.
然而,我所看到的例子,其中update_idletasks并update使用一个接一个,我不能明白其中的道理,因为从理论上讲update做的一切update_idletasks一样.
这些待处理事件究竟是什么以及文档正在讨论的空闲任务?有什么区别和关系?
话虽这么回答,在我应该使用什么是真正的情况update了update_idletasks?具体例子也是值得赞赏的.
所以我一直在使用tkinter中的canvas小部件来创建一个带有滚动条的标签框架.一切都很好,除了框架只扩展到放置在其中的标签的大小 - 我希望框架扩展到父画布的大小.
如果我在画布中使用pack(expand = True)(我已经在下面的代码中注释掉了),但是滚动条不起作用,这很容易就可以完成.
这是适当的代码:
self.canvas = Canvas(frame, bg = 'pink')
self.canvas.pack(side = RIGHT, fill = BOTH, expand = True)
self.mailbox_frame = Frame(self.canvas, bg = 'purple')
self.canvas.create_window((0,0),window=self.mailbox_frame, anchor = NW)
#self.mailbox_frame.pack(side = LEFT, fill = BOTH, expand = True)
mail_scroll = Scrollbar(self.canvas, orient = "vertical",
command = self.canvas.yview)
mail_scroll.pack(side = RIGHT, fill = Y)
self.canvas.config(yscrollcommand = mail_scroll.set)
self.mailbox_frame.bind("<Configure>", self.OnFrameConfigure)
def OnFrameConfigure(self, event):
self.canvas.configure(scrollregion=self.canvas.bbox("all"))
Run Code Online (Sandbox Code Playgroud)
我还提供了带彩色框架的图像,这样你就可以看到我所得到的东西.粉红色区域是需要通过mailbox_frame填充的画布(您可以看到右侧的滚动条):
谢谢
虽然是python的新手并且没有很多知识,但我遇到了问题.我试图添加一个GUI输入框,我发现你这样做的方法是使用一个名为tkiner的模块.当我试图通过ActivePython包在我的arch linux机器上安装它时,我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.6/tkinter/__init__.py", line 36, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: libtk8.6.so: cannot open shared object file: No such file or directory
shell returned 1\
Run Code Online (Sandbox Code Playgroud)
这可能是一个常见的问题,但由于我缺乏知识,我觉得你和我一样简单......谢谢!