在本文中,我们将为您详细介绍Tkinter中的笔记本小部件的相关知识,并且为您解答关于tkinter组件位置的疑问,此外,我们还会提供一些关于Jupyter笔记本小部件、PythonTkinter从文
在本文中,我们将为您详细介绍Tkinter中的笔记本小部件的相关知识,并且为您解答关于tkinter组件位置的疑问,此外,我们还会提供一些关于Jupyter 笔记本小部件、Python Tkinter 从文本小部件输出导入数据、Python Tkinter:停止文本小部件标签中的事件传播、Python 脚本标准输出中的 CLI 命令到 tkinter 文本小部件的有用信息。
本文目录一览:- Tkinter中的笔记本小部件(tkinter组件位置)
- Jupyter 笔记本小部件
- Python Tkinter 从文本小部件输出导入数据
- Python Tkinter:停止文本小部件标签中的事件传播
- Python 脚本标准输出中的 CLI 命令到 tkinter 文本小部件
Tkinter中的笔记本小部件(tkinter组件位置)
在使用Tkinter和wxPython进行了一些尝试之后,就我的源代码看起来如何干净而言,我更喜欢Tkinter。但是,它似乎没有那么多功能。特别是它没有选项卡(如Firefox窗口顶部的选项卡)。
在该主题上进行一些谷歌搜索可以提供一些建议。有一个带有类的食谱条目,允许您使用选项卡,但这很原始。SourceForge上也有Pythonmegawidget,尽管这看起来很旧,并且在安装过程中给了我错误。
有没有人在Tkinter中制作选项卡式GUI的经验?你用了什么?还是仅仅是需要更强大的窗口组件的任何人都必须使用wxPython的情况?
答案1
小编典典在最新的Python(>2.7)版本上,您可以使用该ttk
模块,该模块提供对
Tk主题小部件 集的访问,该模块已在中引入Tk 8.5
。
这是ttk
在Python 2中导入的方法:
import ttkhelp(ttk.Notebook)
在Python
3中,该ttk
模块随附于标准发行版,作为的子模块tkinter
。
这是一个基于TkDocs
网站示例的简单工作示例:
from tkinter import ttkimport tkinter as tkfrom tkinter.scrolledtext import ScrolledTextdef demo(): root = tk.Tk() root.title("ttk.Notebook") nb = ttk.Notebook(root) # adding Frames as pages for the ttk.Notebook # first page, which would get widgets gridded into it page1 = ttk.Frame(nb) # second page page2 = ttk.Frame(nb) text = ScrolledText(page2) text.pack(expand=1, fill="both") nb.add(page1, text=''One'') nb.add(page2, text=''Two'') nb.pack(expand=1, fill="both") root.mainloop()if __name__ == "__main__": demo()
另一种选择是使用库中的NoteBook
小部件tkinter.tix
。要使用tkinter.tix
,您必须已Tix
安装了小部件,通常是在安装Tk
小部件的同时。要测试您的安装,请尝试以下操作:
from tkinter import tixroot = tix.Tk()root.tk.eval(''package require Tix'')
有关更多信息,请在PSF网站上查看此网页。
请注意,它tix
已经很老了,并且没有得到很好的支持,因此您最好的选择是ttk.Notebook
。
Jupyter 笔记本小部件
如何解决Jupyter 笔记本小部件?
enter image description here
如何从 Jan-DEC 获得特定月份中数量最多的特定产品,例如,如果我选择 Jan,并且数量最多的产品是 Vicks,则它会退回 vics 9000
解决方法
相应地,您的错误 IndentationError: unexpected indent
有缩进问题。
您可以自由选择要使用的缩进空格数,但您需要坚持下去。如果您将一行缩进 4 个空格,然后将下一行缩进 3(或 5、19 或 ...),您将收到此错误。
对于您的示例,您应该像第 3 行一样在第 4 行和第 6 行添加一个空格。
Python Tkinter 从文本小部件输出导入数据
如何解决Python Tkinter 从文本小部件输出导入数据?
我尝试将输入的数据从文本条目写入 excel 文件。
如果我这样做:
address = invoice_address_entry.get("1.0",END)
for item in address:
worksheet.write(row,col,item)
row +=1
我以列的形式获取数据
解决方法
根据症状,
address = invoice_address_entry.get("1.0",END)
返回一个多行字符串。迭代一个字符串会产生其中的单个字符。
如果您希望其中的每一行都在单独的工作表行中,请先使用 .splitlines()
。
address = invoice_address_entry.get("1.0",END)
for item in address.splitlines():
worksheet.write(row,col,item)
row += 1
Python Tkinter:停止文本小部件标签中的事件传播
我目前正在编写配色方案编辑器。为了预览该方案,我使用了一个文本小部件,在其中插入带有相应颜色标签的文本(我以编程方式生成)。
我想要的是以下行为:
- 单击文本小部件上没有文本的任何位置:更改背景颜色
- 单击带有标签插入的文本:更改标签对应的前景色
现在这是我的问题:
当我单击带标签的文本时,将调用标签的回调。到现在为止还挺好。但是,虽然我在标签回调方法中返回了“
break”(这应该停止进一步的事件处理),但是也将调用文本小部件的回调。 我该如何阻止呢?
为了说明这个特定问题,我编写了这个工作示例(针对Python 2和3):
#!/usr/bin/env pythontry: from Tkinter import * from tkMessageBox import showinfoexcept ImportError: from tkinter import * from tkinter.messagebox import showinfodef on_click(event, widget_origin=''?''): showinfo(''Click'', ''"{}"" clicked''.format(widget_origin)) return ''break''root = Tk()text = Text(root)text.pack()text.insert(CURRENT, ''Some untagged text...\n'')text.bind(''<Button-1>'', lambda e, w=''textwidget'': on_click(e, w))for i in range(5): tag_name = ''tag_{}''.format(i) text.tag_config(tag_name) text.tag_bind(tag_name, ''<Button-1>'', lambda e, w=tag_name: on_click(e, w)) text.insert(CURRENT, tag_name + '' '', tag_name)root.mainloop()
任何帮助表示赞赏!
编辑:也尝试过Python 2。
答案1
小编典典好吧,在 稍微 修改一下之后,我能够找到一个可行的解决方案。我认为问题在于标签可能没有从BaseWidget继承。
我的解决方法:
- 对标签进行单独的回调;在此处设置一个变量,以跟踪单击了哪个标签
- 让文本小部件的事件处理程序根据此变量的内容决定要做什么
代码中的解决方法(很抱歉在global
这里使用,但是我只是修改了我的问题的简单示例…):
#!/usr/bin/env pythontry: from Tkinter import * from tkMessageBox import showinfoexcept ImportError: from tkinter import * from tkinter.messagebox import showinfotag_to_handle = ''''def on_click(event, widget_origin=''?''): global tag_to_handle if tag_to_handle: showinfo(''Click'', ''"{}" clicked''.format(tag_to_handle)) tag_to_handle = '''' else: showinfo(''Click'', ''"{} " clicked''.format(widget_origin))def on_tag_click(event, tag): global tag_to_handle tag_to_handle = tagroot = Tk()text = Text(root)text.pack()text.insert(CURRENT, ''Some untagged text...\n'')text.bind(''<Button-1>'', lambda e, w=''textwidget'': on_click(e, w))for i in range(5): tag_name = ''tag_{}''.format(i) text.tag_config(tag_name) text.tag_bind(tag_name, ''<Button-1>'', lambda e, w=tag_name: on_tag_click(e, w)) text.insert(CURRENT, tag_name + '' '', tag_name)root.mainloop()
我希望这对遇到相同问题的人有所帮助。
我仍然愿意接受更好的解决方案!
Python 脚本标准输出中的 CLI 命令到 tkinter 文本小部件
如何解决Python 脚本标准输出中的 CLI 命令到 tkinter 文本小部件?
我正在我的脚本中使用以下命令运行 CLI 命令:os.system("sudo dfu-util -D {} -a 0 dfu-util > 0.9".format(value))
并且我希望此命令的输出显示在 Tkinter 文本小部件中而不是在我的控制台上。
import tkinter as tk
from tkinter import *
from tkinter.ttk import ComboBox
from contextlib import redirect_stdout
import os
import sys
root = Tk()
# specify size of window.
root.geometry("700x400")
# Create text widget and specify size.
T = Text(root,height = 21,width = 75)
# Create label
l = Label(root,text = "Select Your FW")
l.config(font =("Courier",14))
output = """Script output goes here"""
# Create an Exit button.
b2 = Button(root,text = "Exit",command = root.destroy)
l.pack()
T.pack()
b2.pack()
class Test:
def __init__(self,root):
'''''' Combo Box with a list of cwd files''''''
self.var = StringVar()
#self.data = ("one","two","three","four")
self.data = os.listdir()
self.cb = ComboBox(root,values=self.data)
self.cb.place(x=400,y=300)
self.b1 = Button(root,text="Select",command=self.select).place(x=60,y=300)
def select(self):
value = self.cb.get()
os.system("sudo dfu-util -D {} -a 0 dfu-util 0.9".format(value))
# Insert the output.
T.insert(tk.END,output)
tt = Test(root)
tk.mainloop()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
我们今天的关于Tkinter中的笔记本小部件和tkinter组件位置的分享已经告一段落,感谢您的关注,如果您想了解更多关于Jupyter 笔记本小部件、Python Tkinter 从文本小部件输出导入数据、Python Tkinter:停止文本小部件标签中的事件传播、Python 脚本标准输出中的 CLI 命令到 tkinter 文本小部件的相关信息,请在本站查询。
本文标签: