我写了一个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.每次更改变量后我都尝试将其放入,但它没有帮助.
我正在尝试创建一个在节点外打印节点标签的图形.我能够生成如下所示的"偏移"来解决目的.但是,有时标签与边缘重叠(这是不合需要的,因为在节点周围有很多空白区域可以打印相应的标签).我需要以这样的方式标记这些节点,使得标签不与任何边缘重叠,或者至少尽可能地尽量减少重叠.
import networkx as nx
from networkx.utils import is_list_of_ints, flatten
import matplotlib.pyplot as plt
G=nx.Graph()
G = nx.complete_graph(5)
mapping = {0:'aaaaaaa',1:'bbbbbbb',2:'ccccccc', 3:'dddddddd', 4:'eeeeeeeee'}
G = nx.relabel_nodes(G,mapping)
plt.figure(figsize=(10,10), facecolor="w", frameon=False)
pos = nx.graphviz_layout(G, prog="fdp") #calculate position (x,y) coordinates
nx.draw_networkx_nodes(G,pos,node_size=1200,node_shape='o',node_color='0.75')
nx.draw_networkx_edges(G,pos, width=2,edge_color='b')
#for labeling outside the node
offset =10
pos_labels = {}
keys = pos.keys()
for key in keys:
x, y = pos[key]
pos_labels[key] = (x, y+offset)
nx.draw_networkx_labels(G,pos=pos_labels,fontsize=2)
plt.show()
Run Code Online (Sandbox Code Playgroud)
networkx中是否有任何可以处理这种情况的功能.我google了很长时间没有成功.
在使用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)
但我不知道从哪里开始,我找不到任何说法怎么做.
我遇到了与此处报道的类似问题.我不明白为什么刻度标签文本是一个空字符串:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,2*np.pi,100)
y = np.sin(x)**2
fig, ax = plt.subplots()
ax.plot(x,y)
labels = ax.get_xticklabels()
for label in labels:
print(label)
plt.show()
Run Code Online (Sandbox Code Playgroud)
输出:
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Text(0,0,'')
Run Code Online (Sandbox Code Playgroud)
我得到了相同的结果,ax.xaxis.get_ticklabels()但绘制的图表在保存或显示时在x轴上显示了八个标记的刻度.但是,如果我在显示绘图后要求标签,则labels列表已正确填充.当然,做一些关于改变它们的事情有点晚了.
fig, ax = plt.subplots()
ax.plot(x,y)
plt.show()
labels = ax.get_xticklabels()
for label in labels:
print(label)
Run Code Online (Sandbox Code Playgroud)
输出:
Text(0,0,'0')
Text(1,0,'1')
Text(2,0,'2')
Text(3,0,'3')
Text(4,0,'4')
Text(5,0,'5')
Text(6,0,'6')
Text(7,0,'7')
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况(Mac OS X Yosemite,Matplotlib 1.5.1)以及如何在显示或保存我的情节之前 …
如何在matplotlib中旋转xticklabels以使每个xticklabel之间的间距相等?
例如,使用此代码:
import matplotlib.pyplot as plt
import numpy as np
# Data + parameters
fontsize = 20
t = np.arange(0.0, 6.0, 1)
xticklabels = ['Full', 'token emb', 'char emb', 'char LSTM',
'token LSTM', 'feed forward','ANN']
# Plotting
fig = plt.figure(1)
ax = fig.add_subplot(111)
plt.plot(t, t)
plt.xticks(range(0, len(t) + 1))
ax.tick_params(axis='both', which='major', labelsize=fontsize)
ax.set_xticklabels(xticklabels, rotation = 45)
fig.savefig('test_rotation.png', dpi=300, format='png', bbox_inches='tight')
Run Code Online (Sandbox Code Playgroud)
我获得:
每个xticklabel之间的间距是不相等的.例如,"Full"和"token emb"之间的间距远大于"前馈"和"ANN"之间的间距.
我在Windows 7 SP1 x64 Ultimate上使用Matplotlib 2.0.0和Python 3.5 64位.
我想使用f.label方法来创建表单元素标签,但是 - 我希望将表单元素嵌套在标签内.这可能吗?
- 来自W3C -
要隐式地将标签与另一个控件相关联,控制元素必须位于LABEL元素的内容中.在这种情况下,LABEL可能只包含一个控制元素.标签本身可以位于相关控件之前或之后.
在此示例中,我们隐式地将两个标签与两个文本输入控件相关联:
<form action="..." method="post">
<p>
<label>
First Name
<input type="text" name="firstname" />
</label>
<label>
<input type="text" name="lastname" />
Last Name
</label>
</p>
</form>
Run Code Online (Sandbox Code Playgroud) var num = 0;
for(var i = 0; i < 10; i++){
for(var j = 0; j < 10 ; j++){
if(i == 5 && j == 5){
break;
}
num++;
}
}
console.log(num)Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我希望结果为55,但为什么结果为95.
但是为什么如果我添加标签,结果会变成55?
var num = 0;
outermost:
for(var i = 0; i < 10; i++){
for(var j = 0; j < 10 ; j++){
if(i == 5 && j == 5){
break outermost;
}
num++;
}
}
console.log(num);Run Code Online (Sandbox Code Playgroud)
我正在寻找一种简单的方法来逐步更改显示为带有d3的svg文本的数字的值.
var quality = [0.06, 14];
// qSVG is just the main svg element
qSVG.selectAll(".txt")
.data(quality)
.enter()
.append("text")
.attr("class", "txt")
.text(0)
.transition()
.duration(1750)
.text(function(d){
return d;
});
Run Code Online (Sandbox Code Playgroud)
由于这种情况下的文本是一个数字,我希望有一种简单的方法可以将它递增到转换的结尾.
也许有人有个主意.
干杯
我正在查看这个问题,并发现绑定Label.Content到非字符串值将应用隐式TextBlock样式,但是绑定到字符串则不会.
以下是重现问题的示例代码:
<Window.Resources>
<Style TargetType="Label">
<Setter Property="FontSize" Value="26"/>
<Setter Property="Margin" Value="10"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="FontSize" Value="26"/>
<Setter Property="Margin" Value="10"/>
</Style>
</Window.Resources>
<Grid>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding SomeString}" Background="Red"/>
<Label Content="{Binding SomeDecimal}" Background="Green"/>
</StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)
绑定值的代码是
SomeDecimal = 50;
SomeString = SomeDecimal.ToString();
Run Code Online (Sandbox Code Playgroud)
最终结果如下所示,Margin隐式TextBlock样式的属性应用于仅绑定到非字符串的Label:

两个标签都呈现为
<Label>
<Border>
<ContentPresenter>
<TextBlock />
</ContentPresenter>
</Border>
</Label>
Run Code Online (Sandbox Code Playgroud)
当我使用Snoop检查VisualTree时,我可以看到它对于两个元素看起来完全相同,除了第二个TextBlock从隐式样式应用Margin,而第一个没有.

我已经使用Blend来提取默认标签模板的副本,但是没有看到任何奇怪的东西,当我将模板应用于我的两个标签时,同样的事情发生了.
<Label.Template>
<ControlTemplate TargetType="{x:Type Label}">
<Border BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
Padding="{TemplateBinding …Run Code Online (Sandbox Code Playgroud) 我在创建打印ggplot2使用scale_fill_gradientn.我想在缩放图例的最小值和最大值处添加文本.例如,在图例最小显示"最小"和图例最大显示"最大".有些帖子使用离散填充并添加带有数字而不是文本的标签(例如此处),但我不确定如何使用该labels功能scale_fill_gradientn仅在最小和最大时插入文本.目前我很容易出错:
Error in scale_labels.continuous(scale, breaks) :
Breaks and labels are different lengths
Run Code Online (Sandbox Code Playgroud)
这种类型的缩放/填充是否可以在ggplot2中使用此文本标签?
# The example code here produces an plot for illustrative purposes only.
# create data frame, from ggplot2 documentation
df <- expand.grid(x = 0:5, y = 0:5)
df$z <- runif(nrow(df))
#plot
ggplot(df, aes(x, y, fill = z)) + geom_raster() +
scale_fill_gradientn(colours=topo.colors(7),na.value = "transparent")
Run Code Online (Sandbox Code Playgroud) label ×10
python ×5
matplotlib ×2
tkinter ×2
break ×1
d3.js ×1
fill ×1
forms ×1
ggplot2 ×1
html ×1
javascript ×1
legend ×1
networkx ×1
nodes ×1
plot ×1
python-3.x ×1
r ×1
styles ×1
transition ×1
wpf ×1