GVKun编程网logo

Tkinter中的笔记本小部件(tkinter组件位置)

11

在本文中,我们将为您详细介绍Tkinter中的笔记本小部件的相关知识,并且为您解答关于tkinter组件位置的疑问,此外,我们还会提供一些关于Jupyter笔记本小部件、PythonTkinter从文

在本文中,我们将为您详细介绍Tkinter中的笔记本小部件的相关知识,并且为您解答关于tkinter组件位置的疑问,此外,我们还会提供一些关于Jupyter 笔记本小部件、Python Tkinter 从文本小部件输出导入数据、Python Tkinter:停止文本小部件标签中的事件传播、Python 脚本标准输出中的 CLI 命令到 tkinter 文本小部件的有用信息。

本文目录一览:

Tkinter中的笔记本小部件(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 笔记本小部件

如何解决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 从文本小部件输出导入数据

如何解决Python Tkinter 从文本小部件输出导入数据?

我尝试将输入的数据从文本条目写入 excel 文件。

如果我这样做:

address = invoice_address_entry.get("1.0",END)
for item in address:
    worksheet.write(row,col,item)
    row +=1

我以列的形式获取数据

enter image description here

enter image description here

enter image description here

解决方法

根据症状,

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:停止文本小部件标签中的事件传播

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 文本小部件

如何解决Python 脚本标准输出中的 CLI 命令到 tkinter 文本小部件?

我正在我的脚本中使用以下命令运行 C​​LI 命令: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 文本小部件的相关信息,请在本站查询。

本文标签: