我正在尝试使用ttk/Tkinter构建一个基本的GUI.
我已经绘制出一个基本的GUI,它具有正确的基本组件,但是当我尝试美化它/将其空间化时,我达到了让ttk容器很好地发挥作用的极限......
例子:
from Tkinter import *
import ttk
class MakeGUI(object):
def __init__(self,root):
self.root = root
self.root.title("Text Comparitor")
## build frame
self.mainframe = ttk.Frame(self.root, padding="3 3 12 12")
self.mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
self.mainframe.columnconfigure(0, weight=1)
self.mainframe.rowconfigure(0, weight=1)
self.mainframe.pack()
## text labels
ttk.Label(self.mainframe, text="Conversion Truth Tester", font=("Helvetica", 32)).grid(column=1, row=1, sticky=E)
self.mainframe.pack(side="bottom", fill=BOTH, expand=True)
self.mainframe.grid()
ttk.Label(self.mainframe, text="Source Filename:").grid(column=1, row=2, sticky=W)
ttk.Label(self.mainframe, text="Source Text:").grid(column=1, row=3, sticky=W)
ttk.Label(self.mainframe, text="Converted Text:").grid(column=1, row=4, sticky=W)
ttk.Label(self.mainframe, text="Cleaned Source:").grid(column=1, row=5, sticky=W)
ttk.Label(self.mainframe, text="Cleaned Converted:").grid(column=1, row=6, sticky=W)
ttk.Label(self.mainframe, …Run Code Online (Sandbox Code Playgroud) 我有一个以mS精确间隔发生的事件列表,这些事件跨越了几天.我想聚集在'每n分钟'时隙中发生的所有事件(可以是20个事件,可以是没有事件).我datetime.datetime为每个活动都有一个项目,所以我可以datetime.datetime.minute毫无困难地获得.
我的事件列表按时间顺序排序,最早的第一个,最后的最后一个.该列表在我正在处理的时间段内完成.
这个想法是我可以改变名单: -
[[a],[b],[c],[d],[e],[f],[g],[h],[i]...]
Run Code Online (Sandbox Code Playgroud)
其中a,b,c出现在分钟0和29之间,d,e,f,g出现在分钟30和59之间,0到29之间没有任何东西(下一个小时),h,i介于30到59之间......
进入新名单: -
[[[a],[b],[c]],[[d],[e],[f],[g]],[],[[h],[i]]...]
Run Code Online (Sandbox Code Playgroud)
我不确定如何构建一个遍历两个时隙的迭代器,直到时间序列列表结束.任何我能想到的东西xrange一旦完成就会停止,所以我想知道是否有一种方法可以使用'while'进行切片?
我也将使用一个较小的时间段,大约5分钟,我使用30分钟作为演示的较短的例子.
(就上下文而言,我正在根据新西兰最近的地震制作基于时间的地理视图.并希望在一小段时间内显示所有发生的地震,以加快重播速度)
我正在尝试设置一个ubuntu盒子,这样我就可以做一些工作,而且我有一段时间试图安装SQLAlchemy.
我已经尝试了很多我可以在教程等上找到的东西,我发现自己的最新位置是:
easy_install SQLAchemy 似乎工作正常,并安装版本0.7.4(据我所知)
如果我进入python并尝试import sqlalchemy我得到no module named sqlalchemy我也找到了一个脚本,列出了python版本上的所有模块,并没有在那里列出.
我是Ubuntu的新手,所以我在黑暗中有点感觉.我使用的是Python 2.7 32bit(全新安装)Ubuntu 12.04(全部都是最新的).有什么建议?
编辑:我看了在/ usr/bin,然后看到有三个文件夹,可能是相关的- python,python2而python2.7这可能是相关的...
我正在尝试为Tkinter文本小部件设置背景颜色 - 我正在尝试复制此处和此处的示例,这两个似乎都表明我可以这样做:
w.create_text(*textSet, text=i[3], font=("Helvetica", 16), bg="white"))
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个时,我收到Tkinker的错误:
w.create_text(*textSet, text=i[3], font=("Helvetica", 16), bg="white")
File "C:\python27\lib\lib-tk\Tkinter.py", line 2213, in create_text
return self._create('text', args, kw)
File "C:\python27\lib\lib-tk\Tkinter.py", line 2189, in _create
*(args + self._options(cnf, kw))))
_tkinter.TclError: unknown option "-bg"
Run Code Online (Sandbox Code Playgroud)
我尝试使用关键'背景'得到相同的结果.
文本需要覆盖在圆上,圆圈大小是动态生成的,所以当圆圈小于文本时,我想要一个纯实的背景,因此圆圈的线条不会破坏文本.
任何指向我做错的指针?这是整个部分:
master = Tk()
w = Canvas(master, width=1000, height=1000)
w.config(bg='white')
w.pack()
w.create_oval(*coordsSet, width=3)
w.create_text(*textSet, text=i[3], font=("Helvetica", 16), bg="white")
mainloop()
Run Code Online (Sandbox Code Playgroud) 我认为它叫做切片......
基本上我有一个列表清单:
[['fmt/10', 3L, 5L, Decimal('9500')],
['fmt/353', 1L, 1L, Decimal('500')],
['fmt/7', 3L, 5L, Decimal('9500')],
['fmt/8', 3L, 5L, Decimal('9500')],
['fmt/9', 3L, 5L, Decimal('9500')]]
Run Code Online (Sandbox Code Playgroud)
我想拉出4个新列表,全部位于[0],[1],[2]和[3]位置.
所以如果看起来像:
A = ['fmt/10', 'fmt/353','fmt/7','fmt/8','fmt/9']
B = [3,1,3,3,3]
C = [5,1,5,5,5]
D = [9500,500,9500,9500,9500]
Run Code Online (Sandbox Code Playgroud)
什么是实现这一目标的最简单方法?从阅读中我想我想使用'zip',但我不确定它是如何工作的.
我想迭代一个列表列表,并从列表中提取所有组合.
我可以通过以下方式完成:
list = [['1','2','3'],['a','b','c'],['x','y','z']]
for itemi in list[0]:
print itemi
for itemj in list[1]:
print itemi+itemj
for itemk in list[2]:
print itemi+itemj+itemk
Run Code Online (Sandbox Code Playgroud)
我的问题是我希望在列表列表中的不同数量的列表上执行此操作.首先会有一个列表,(现在)以64个列表结束.
上面的示例适用于3个列表,实际上所有列表都包含相同的值(0到255).我使用了上面的示例,这样您就可以看到输出应该是什么样子了.
我认为必须有一个更好的方法,而不必为每个列表的列表构建嵌套的for循环.
在比较函数中,我基本上在长二进制对象内寻找模式(例如"AAA")(例如,aaaAAAbbbBBB)
我正在通过文件向后工作(我知道匹配将比结束更接近结束),向正在检查匹配的变量添加1个字节:
1. aaaAAAbbbBB[B]
2. aaaAAAbbbB[BB]
3. aaaAAAbbb[BBB]
4. aaaAAAbb[bBBB]
5. ...
n. aaa[AAAbbbBBB]
Run Code Online (Sandbox Code Playgroud)
匹配找到,偏移= -n
鉴于我知道我的模式是3个元素长,我想知道我是否可以简单地窗口搜索变量而不是递增它 - 当匹配列表中的+1,000,000个元素时它变得非常慢 - 相同数据的窗口视图将是:
1. aaaAAAbbb[BBB]
2. aaaAAAbb[bBB]B
3. aaaAAAb[bbB]BB
4. aaaAAA[bbb]BBB
5. ...
n. aaa[AAA]bbbBBB
Run Code Online (Sandbox Code Playgroud)
匹配找到,偏移= -n
我目前的搜索结果如下:
if marker in f_data[-counter:]:
offset = (len(f_data)-counter)+len(marker)
return offset
Run Code Online (Sandbox Code Playgroud)
在MATLAB我会使用的阵列寻址通过阵列移动,(例如调用窗口=α[5:8],窗口= A [4:7]等),但我不认为在Python这是可能的(2.7)
我可以看到使用滑动窗口,几点建议(滚动或滑动Python窗口迭代器 -这看起来像一场势均力敌的比赛),但我看不出如何实现它或它们引用库,我不知道该怎么使用.
这样做有内置功能吗?
我正在使用hex(int('00000000', 2))二进制字符串转换为十六进制.
它工作正常的所有(输出)值从10到FF,但它不填充00到09正常,而我看到0x0来0x9的,而不是0x00来0x09,我期待.
我究竟做错了什么?
我正在尝试组合一个具有"级别"概念的工具.每个"级别"都有一组变量,用于支持我想要实现的特定于每个级别的活动.
我编写了一个可以工作的硬编码版本(在某种程度上),但它仅限于我硬编码的级别数.令我感到震惊的是,必须有一种更加流畅的方式来编写这个函数,因此可以动态生成级别变量:
def levelVarsGetter(level):
if level == 1:
levelDict = {'URLRegEx':baseDict['L1Regex'], 'titleRegEx':baseDict['L1TitleRegex'], 'buildPortion':baseDict['L1buildPortion'], 'levelParser':'level_1'}
elif level ==2:
levelDict = {'URLRegEx':baseDict['L2Regex'], 'titleRegEx':baseDict['L2TitleRegex'], 'buildPortion':baseDict['L2buildPortion'], 'levelParser':'level_2'}
elif level ==3:
levelDict = {'URLRegEx':baseDict['L3Regex'], 'titleRegEx':baseDict['L3TitleRegex'], 'buildPortion':baseDict['L3buildPortion'], 'levelParser':'level_3'}
elif level ==4:
levelDict = {'URLRegEx':baseDict['L4Regex'], 'titleRegEx':baseDict['L4TitleRegex'], 'buildPortion':baseDict['L4buildPortion'], 'levelParser':'level_4'}
elif level ==5:
levelDict = {'URLRegEx':baseDict['L5Regex'], 'titleRegEx':baseDict['L5TitleRegex'], 'buildPortion':baseDict['L5buildPortion'], 'levelParser':'level_5'}
return levelDict
Run Code Online (Sandbox Code Playgroud)
dict中的所有变量都是在初始化函数中手动输入的.如果需要,可以更改标签.
对于上下文,引用代码:
for x in xrange (1, baseDict['numberOfLevels']+1):
links=[]
levelDict= levelVarsGetter(x)
URLRegEx = levelDict['URLRegEx']
titleRegEx = levelDict['titleRegEx']
buildPortion = levelDict['buildPortion']
level = levelDict['levelParser']
go = siteParser()
Run Code Online (Sandbox Code Playgroud)