我写了一个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.每次更改变量后我都尝试将其放入,但它没有帮助.
我想在Tkinter中有一个Dropdown Menu,其中包含与此命令关联的快捷键.这可能吗?
我如何在特定字符下添加下划线,以允许Alt-F-S(文件 - >保存)?
我正在尝试在用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) 我刚刚开始学习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应用程序的适当方法是什么?还是只是'不'?
我期望下面两个脚本的输出相同.
但是当我执行脚本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) 我正在尝试更改我的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 2 Tkinter和PyObjC,然后我使用py2app.
程序工作正常,但是每当我打开程序时窗口都会以隐藏的方式启动,所以直到我点击停靠栏上的图标才能显示它.
有没有办法控制这个,让窗口在应用程序启动时打开的其他窗口的顶部?
只是为了澄清,它不必在应用程序运行的整个过程中处于顶部.我只是需要它在其他窗口启动时.
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)
我想将画布内容转换为位图或其他图像,然后执行其他操作,例如旋转或缩放图像,或更改其坐标.
位图可以提高效率,以显示我是否不再绘图.
我该怎么办?
我刚开始学习如何创建自定义弹出对话框; 事实证明,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) 在使用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)
但我不知道从哪里开始,我找不到任何说法怎么做.