标签: tkinter

从变量更新Tkinter标签

我写了一个Python脚本,它执行一些生成任务,然后不断更改存储为字符串变量的一些文本.这是有效的,我可以在每次更改时打印字符串.

我可以让Label第一次显示字符串,但它永远不会更新.

这是我的代码:

from tkinter import *

outputText = 'Ready'
counter = int(0)

root = Tk()
root.maxsize(400, 400)

var = StringVar()

l = Label(root, textvariable=var, anchor=NW, justify=LEFT, wraplength=398)
l.pack()

var.set(outputText)

while True:
    counter = counter + 1
    outputText = result
    outputText = result
    outputText = result
    if counter == 5:
        break

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

标签将显示Ready,但不会更新以将其更改为字符串,因为它们稍后生成.

经过一番谷歌搜索和浏览本网站的答案,我认为解决方案可能是使用update_idletasks.每次更改变量后我都尝试将其放入,但它没有帮助.

python label tkinter

19
推荐指数
2
解决办法
12万
查看次数

带键盘快捷键的Tkinter下拉菜单?

我想在Tkinter中有一个Dropdown Menu,其中包含与此命令关联的快捷键.这可能吗?

我如何在特定字符下添加下划线,以允许Alt-F-S(文件 - >保存)?

python keyboard-shortcuts tkinter

19
推荐指数
1
解决办法
1万
查看次数

Python Tkinter在GUI中嵌入Matplotlib

我正在尝试在用Python编码的Tkinter GUI中嵌入一个绘图.我相信下面的代码只是简单地将图形放入画布中,但我没有对GUI网格中的画布位置进行任何控制.我希望能够将我的GUI的子部分作为情节...而不是整个部分.如何定位此画布小部件?

#!/usr/apps/Python/bin/python
import matplotlib, sys
matplotlib.use('TkAgg')
from numpy import arange, sin, pi
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
from Tkinter import *

master = Tk()
master.title("Hello World!")
#-------------------------------------------------------------------------------

f = Figure(figsize=(5,4), dpi=100)
a = f.add_subplot(111)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a.plot(t,s)


dataPlot = FigureCanvasTkAgg(f, master=master)
dataPlot.show()
dataPlot.get_tk_widget().pack(side=TOP, fill=BOTH, expand=1)
#-------------------------------------------------------------------------------
master.mainloop()
Run Code Online (Sandbox Code Playgroud)

python grid canvas tkinter matplotlib

19
推荐指数
1
解决办法
3万
查看次数

如何在Tkinter应用程序上运行unittest?

我刚刚开始学习TDD,我正在使用Tkinter GUI开发一个程序.唯一的问题是,一旦.mainloop()调用该方法,测试套件就会挂起,直到窗口关闭.

这是我的代码示例:

# server.py
import Tkinter as tk

class Server(tk.Tk):
    def __init__(self):
        tk.Tk.__init__(self)
        self.mainloop()
Run Code Online (Sandbox Code Playgroud)

# test.py
import unittest
import server

class ServerTestCase(unittest.TestCase):
    def testClassSetup(self):
       server.Server()
       # and of course I can't call any server.whatever functions here

if __name__ == '__main__':
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

测试Tkinter应用程序的适当方法是什么?还是只是'不'?

python tdd unit-testing tkinter

19
推荐指数
2
解决办法
6364
查看次数

按钮上的图像

我期望下面两个脚本的输出相同.

但是当我执行脚本1时,我没有在按钮上获得图像.但是,脚本2运行良好.

脚本1

from Tkinter import *
  class fe:
    def __init__(self,master):
      self.b=Button(master,justify = LEFT)
      photo=PhotoImage(file="mine32.gif")
      self.b.config(image=photo,width="10",height="10")
      self.b.pack(side=LEFT)
root = Tk()
front_end=fe(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

脚本2

from Tkinter import *
root=Tk()
b=Button(root,justify = LEFT)
photo=PhotoImage(file="mine32.gif")
b.config(image=photo,width="10",height="10")
b.pack(side=LEFT)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

python image tkinter button

19
推荐指数
1
解决办法
7万
查看次数

如何设置某些Tkinter小部件的边框颜色?

我正在尝试更改我的Tkinter应用程序的背景颜色,但对于某些小部件,它会在边缘留下白色边框.

例如,这个:

from tkinter import *

COLOR = "black"

root = Tk()
root.config(bg=COLOR)

button = Button(text="button", bg=COLOR)
button.pack(padx=5, pady=5)
entry = Entry(bg=COLOR, fg='white')
entry.pack(padx=5, pady=5)
text = Text(bg=COLOR, fg='white')
text.pack(padx=5, pady=5)

root.mainloop()
Run Code Online (Sandbox Code Playgroud)

如何设置某些Tkinter小部件的边框颜色?

python tkinter border tcl colors

19
推荐指数
1
解决办法
5万
查看次数

如何将tkinter窗口置于其他窗口之上?

我使用Python 2 TkinterPyObjC,然后我使用py2app.

程序工作正常,但是每当我打开程序时窗口都会以隐藏的方式启动,所以直到我点击停靠栏上的图标才能显示它.

有没有办法控制这个,让窗口在应用程序启动时打开的其他窗口的顶部?

只是为了澄清,它不必在应用程序运行的整个过程中处于顶部.我只是需要它在其他窗口启动时.

python pyobjc tkinter py2app osx-lion

19
推荐指数
5
解决办法
3万
查看次数

如何将画布内容转换为图像?

from Tkinter import *
root = Tk()
cv = Canvas(root)
cv.create_rectangle(10,10,50,50)
cv.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

我想将画布内容转换为位图或其他图像,然后执行其他操作,例如旋转或缩放图像,或更改其坐标.

位图可以提高效率,以显示我是否不再绘图.

我该怎么办?

python tkinter bitmap

19
推荐指数
4
解决办法
4万
查看次数

正确的方法来实现自定义弹出tkinter对话框

我刚开始学习如何创建自定义弹出对话框; 事实证明,tkinter messagebox它真的很容易使用,但它也没有做太多.这是我尝试创建一个对话框,该对话框将接受输入,然后将其存储在用户名中.

我的问题是实现这个的推荐方式是什么?正如布莱恩·奥克利在这篇评论中所说.

我建议不要使用全局变量.不要让对话框自行销毁,而是让它只销毁实际的小部件,但让对象保持活着状态.然后,调用像inputDialog.get_string(),然后del inputDialog从你的主要逻辑.

也许使用全局变量来返回我的字符串不是最好的主意,但为什么呢?建议的方式是什么?我感到困惑,因为一旦窗口被破坏,我不知道如何触发getstring,并且......关于破坏实际小部件的线,我不确定他是否指的是TopLevel.

我问的原因是因为我想按下提交按钮后弹出框被销毁; 因为毕竟,我希望它恢复到主程序,更新一些东西等等.send在这种情况下按钮方法应该做什么?因为这个特定示例中的想法是允许用户一次又一次地执行它,如果他愿意的话.

import tkinter as tk

class MyDialog:
    def __init__(self, parent):
        top = self.top = tk.Toplevel(parent)
        self.myLabel = tk.Label(top, text='Enter your username below')
        self.myLabel.pack()

        self.myEntryBox = tk.Entry(top)
        self.myEntryBox.pack()

        self.mySubmitButton = tk.Button(top, text='Submit', command=self.send)
        self.mySubmitButton.pack()

    def send(self):
        global username
        username = self.myEntryBox.get()
        self.top.destroy()

def onClick():
    inputDialog = MyDialog(root)
    root.wait_window(inputDialog.top)
    print('Username: ', username)

username = 'Empty'
root = tk.Tk()
mainLabel = tk.Label(root, text='Example …
Run Code Online (Sandbox Code Playgroud)

python dialog tkinter tkmessagebox

19
推荐指数
4
解决办法
7万
查看次数

如何更改标签小部件python tkinter中的文本大小

在使用Tkinter的python 3.4中,如何更改标签小部件中的文本大小?

到目前为止我已经尝试过

label_one = Label(root, text = 'Hello', size = '50')
Run Code Online (Sandbox Code Playgroud)

label_one.config(fontsize='50')
Run Code Online (Sandbox Code Playgroud)

但我不知道从哪里开始,我找不到任何说法怎么做.

python label tkinter

19
推荐指数
1
解决办法
10万
查看次数