天道酬勤,学无止境

tkinter

Get combobox value in python

问题 我正在开发一个简单的程序,我需要从Combobox中获取值。 当Combobox在第一个创建的窗口中时很容易,但是例如,如果我有两个窗口并且Combobox在第二个窗口中,我无法从中读取值。 例如 : from tkinter import * from tkinter import ttk def comando(): print(box_value.get()) parent = Tk() #first created window ciao=Tk() #second created window box_value=StringVar() coltbox = ttk.Combobox(ciao, textvariable=box_value, state='readonly') coltbox["values"] = ["prova","ciao","come","stai"] coltbox.current(0) coltbox.grid(row=0) Button(ciao,text="Salva", command=comando, width=20).grid(row=1) mainloop() 如果我将小部件的父级从ciao更改为父级,它就可以工作! 谁能解释我? 回答1 您不能有两个Tk()窗口。 一个必须是Toplevel 。 要获取变量,您可以执行box

2022-07-11 09:55:07    分类:技术分享    python   tkinter   combobox   ttk

Moving data from function to a class

问题 我需要将信息从函数传递到类中。 该类在 tkinter 中保存 GUI 信息,并为 GUI 提供一些工作和输出数据的功能。 如何为类提供函数的输出? 例子: class Page1(Page): def __init__(self, *args, **kwargs): Page.__init__(self, *args, **kwargs) #setting up a label to change based off output: self.testing_label = tk.Label(self, text='OUTPUT OF WORKER WILL GO HERE', width=20) self.testing_label.pack(side="top") #function that does work: def worker(x): work = x + 5 return(work) 我如何将返回的work放入类中以显示在标签中? 回答1 要在任何类的实例中设置变量的值,您所需要的只是对该类的引用。 您可以将其传递给worker ,或者确保调用worker的任何内容都引用了该页面。 如果没有看到更多的代码,就不可能给出一个具体的例子。 仅根据您的问题,您可以这样做: def worker(x): work = x + 5 return(work)

2022-05-17 05:22:19    分类:技术分享    python   tkinter

AttributeError: 'NoneType' object has no attribute '_root' (My case is different)

问题 from tkinter import* decision=0 fs = IntVar() def coverscreen(): slide=Tk() #Init window slide.title('The Castle of Redemption BETA') #Give window a title frame=Frame(slide) btn1=Button(slide,text='Start Game',command=slide.destroy) #Init 1st button fsbox=Checkbutton(frame,text='Fullscreen',\ variable=fs, onvalue=1,offvalue=0) img=PhotoImage(file='cover.gif') # Init picture label = Label(image=img) # Init label that contains picture label.image = img # keep a reference! label.pack() # Places the label on the window btn1.pack(side=BOTTOM,pady=5) # Places the 1st button on the window fsbox

2022-05-17 03:45:15    分类:技术分享    python-3.x   tkinter

How to get the HWND of a Tkinter window on Windows?

问题 如何在 windows 上的 python3 中获取 Tkinter 窗口的HWND ? 如果可能,我想获得 Tkinter 窗口的本机窗口句柄。 我需要窗口的HWND或HDC来执行自定义绘图操作。 有没有办法获取Canvas或任何其他子组件的HWND ? 有一种方法可以列出当前进程创建的所有窗口。 我还可以遍历前面列出的任何窗口的子窗口。 这将是问题的丑陋解决方案。 如果 Tkinter 不直接暴露句柄,请发布任何替代解决方案。 回答1 我相信您需要的是 TopLevel 窗口方法。 看看这个链接 帧() [#] 返回一个字符串,其中包含对应于窗口最外层父级的系统特定窗口标识符。 对于 Unix,这是 X 窗口标识符。 对于 Windows,这是将 HWND 强制转换为长整数。 还有关于在此处获取 HWND 的其他信息。 winfo_id() [#] 获取此小部件的系统特定窗口标识符。 对于 Unix,这是 X 窗口标识符。 对于 Windows,这是将 HWND 强制转换为长整数。 回报: 窗口标识符。 我相信使用上面的winfo_id() ,你应该能够得到窗口的 HWND。

2022-05-17 02:37:08    分类:技术分享    python-3.x   windows   tkinter   tkinter-canvas

Mainloop and Text with threads

问题 我有使用某些类函数的线程,这些函数打印了很多我想在 Text() 小部件上显示的东西。 所以我尝试将类中的窗口作为类变量,并且命令: mainloop() 似乎阻止了一切继续...... 有什么解决办法吗? 我想做的一般想法:(将控制台转换为 GUI ..) from tkinter import * root = Tk() textbox = Text(root) textbox.pack() def redirector(inputStr): textbox.insert(INSERT, inputStr) sys.stdout.write = redirector root.mainloop() 整个代码: import threading from queue import Queue from Spider import Spider from domain import * from general import * from tkinter import * def mmm(answer1,answer2,master): # answer1,answer2 are user inputs from the first GUI that gets info, master is the root so i can close it master.destroy(

2022-05-16 20:56:14    分类:技术分享    python   python-3.x   user-interface   tkinter   tk

Why does the same program look different when run in Windows and Linux?

问题 我编写了一个简单的 Python 应用程序来测量某个事件的时间。 一切正常,但在两个不同的操作系统上看起来完全不同的事实让我有点头疼。 我可以做点什么吗?为什么会这样? 我的意思是,最后,代码是相同的。 # str8.py # Program to measure time from a certain event from tkinter import * from datetime import datetime class FormatLabel(Label): # A new type of Label widget that allows both text and textvariable def __init__(self, master = None, **kwargs): self.textvariable = kwargs.pop('textvariable', StringVar(master)) self.text = kwargs.pop('text', '{}') self.textvariable.trace('w', self.update_text) Label.__init__(self, master, **kwargs) def update_text(self, *args): self.config(text = self.text

2022-05-16 16:02:14    分类:技术分享    python   linux   windows   tkinter

Python Tkinter, Stop a threading function

问题 我目前正在为 3D 打印机开发 GUI,但遇到了如何停止线程功能的问题。 我希望能够单击一个按钮,该按钮在我的 GUI 中具有另一个功能,该功能将阻止线程功能通过串行端口发送 G 代码字符串。 目前该功能已合并线程以允许在打印期间触发其他功能。 我将非常感谢有关如何合并此停止功能的一些建议。 下面是打开 G 代码文件并通过串行端口发送每一行的函数。 def printFile(): def callback(): f = open(entryBox2.get(), 'r'); for line in f: l = line.strip('\r') ser.write("<" + l + ">") while True: response = ser.read() if (response == 'a'): break t = threading.Thread(target=callback) t.start() 回答1 线程无法停止,它们必须自己停止。 因此,您需要向线程发送一个信号,表明该停止了。 这通常通过Event完成。 stop_event = threading.Event() def callback(): f = open(entryBox2.get(), 'r'); for line in f: l = line.strip('\r') ser.write("

2022-05-16 13:26:04    分类:技术分享    python   multithreading   function   tkinter

Selection from a Treeview automatically converts string numbers to integers

问题 在我正在处理的项目中,您可以编辑以树视图形式显示的数据内容。 数据字段之一是始终以 0 开头的电话号码。 在表中选择正确的记录并使用tree.item(tree.selection())数据时。 由于某种原因,电话号码会自动转换为整数,因此当它们在框中显示给用户时,它们会丢失开头的 0。 有没有什么办法解决这一问题? from tkinter import * import tkinter.ttk as ttk def fnEdit(tree): items = tree.item(tree.selection()) print(items['values'][0]) myGui = Tk() container = Frame(myGui) container.pack(expand=True, fill="both") editButton = Button(myGui, text='Edit', command=lambda: fnEdit(tree)) editButton.pack(fill="x") table_header = ['Contact No.'] tree = ttk.Treeview(container, columns=table_header, show="headings") tree.column(table_header[0]) tree

2022-05-16 08:11:12    分类:技术分享    python   string   tkinter   treeview   selection

Running an external program through a tkinter button in python

问题 from tkinter import * import os class Application(Frame): def __init__(self, master): Frame.__init__(self,master) self.grid() self.create_widgets() def create_widgets(self): self._button = Button(self, text = "Atari", command = self._openFile) self._button.grid() def _openFile(self): os.startfile(z26.exe) root = Tk() root.title("Arcade") root.geometry("200x85") app = Application(root) root.mainloop() 回答1 问题是您使用 x26.exe 作为文字,并且它被评估为好像它是 Python 程序本身的一部分。 相反,将路径加上引号,使其成为字符串: os.startfile('path/z26.exe') 另请参阅 os.startfile(path[, operation]) 的 Python 文档。

2022-05-16 08:01:13    分类:技术分享    python   tkinter

Python Tkinter Tk is not defined

问题 我需要帮助才能使这个简单的 Tkinter 程序在带有 Python 3.5.2 的 Ubuntu 16.04.1 上运行。 这是代码: from tkinter import * root = Tk() mylabel = Label(root, text="Test") mylabel.pack() root.mainloop() 代码原样给我这个错误: Traceback (most recent call last): File "tkinter.py", line 8, in <module> from tkinter import * File "/home/dylan/Documents/proj/python/tkinter.py", line 10, in <module> root = Tk() NameError: name 'Tk' is not defined 我在浏览其他问题时注意到,在制作 Tkinter 程序时,有一些流行的事情可能会出错。 未安装 Tkinter。 在更新我的包、保存我的文件并使用python3 tkinter.py运行我的程序之前,我安装了python-tk和python3-tk包。 注意:将我的文件重命名为tkinter.py以外的名称会导致一个奇怪的错误: Traceback (most recent call last

2022-05-16 07:28:18    分类:技术分享    python-3.x   user-interface   tkinter