小编bha*_*arc的帖子

迭代2维python列表

我创建了一个2维数组,如:

rows =3
columns= 2
mylist = [[0 for x in range(columns)] for x in range(rows)]
for i in range(rows):
    for j in range(columns):
        mylist[i][j] = '%s,%s'%(i,j)
print mylist
Run Code Online (Sandbox Code Playgroud)

打印此列表会显示输出:

[  ['0,0', '0,1'], ['1,0', '1,1'], ['2,0', '2,1']   ]
Run Code Online (Sandbox Code Playgroud)

其中每个列表项都是"行,列"格式的字符串

现在给出这个列表,我想按顺序迭代它:

'0,0'
'1,0'
'2,0'
'0,1'
'1,1'
'2,1'
Run Code Online (Sandbox Code Playgroud)

这是迭代第一列然后第二列,依此类推.我如何用循环做到这一点?

这个问题属于纯python列表,而标记为相同的问题属于numpy数组.他们显然是不同的

python loops multidimensional-array

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

tkinter ttk分隔符不会显示

考虑这个简单的代码:

from Tkinter import *
import ttk
root= Tk()
ttk.Label(root, text='Heading Here').grid(row=1, column=1)
ttk.Separator(root,orient=HORIZONTAL).grid(row=2, columnspan=5)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,分隔符几乎不可见.
ttk分隔符不可见
我用红色箭头标记它,如果你能看到它是一个小点类的东西.

如何使分隔符跨越整个水平宽度,或者至少可见?

tkinter ttk

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

Tkinter在文本小部件中添加行号

试图学习tkinter和python.我想在相邻的框架中显示文本小部件的行号

from Tkinter import *
root = Tk()
txt = Text(root)
txt.pack(expand=YES, fill=BOTH)
frame= Frame(root, width=25)
#

frame.pack(expand=NO, fill=Y, side=LEFT)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

我在一个名为unpythonic的网站上看到了一个例子,但它假设txt的行高为6像素.

我正在尝试这样的事情:

1)将Any-KeyPress事件绑定到返回按键发生的行的函数:

textPad.bind("<Any-KeyPress>", linenumber)


def linenumber(event=None):
    line, column = textPad.index('end').split('.')
    #creating line number toolbar
    try:
       linelabel.pack_forget()
       linelabel.destroy()
       lnbar.pack_forget()
       lnbar.destroy()
    except:
      pass
   lnbar = Frame(root,  width=25)
   for i in range(0, len(line)):
      linelabel= Label(lnbar, text=i)
      linelabel.pack(side=LEFT)
      lnbar.pack(expand=NO, fill=X, side=LEFT)
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会在帧上给出一些奇怪的数字.有更简单的解决方案吗?怎么解决这个问题?

python tkinter

16
推荐指数
1
解决办法
8547
查看次数

动态方法调用在Python 2.7中使用方法名称的字符串

我有一个元组列出了类的方法,如:

t = ('methA','methB','methC','methD','methE','methF')
Run Code Online (Sandbox Code Playgroud)

等等..

现在我需要根据用户选择动态调用这些方法.将根据索引调用这些方法.因此,如果用户选择"0",methA则调用(如果为"5" methF).

我这样做的方法如下:

def makeSelection(self, selected):
    #methodname = t[selected]
    #but as this is from  within the class , it has to be appended with 'self.'methodname
    # also need to pass some arguments locally calculated here
Run Code Online (Sandbox Code Playgroud)

我已经设法解决了一些事情,eval但它产生错误并且一点也不优雅.

python python-2.7

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

简单的ttk ComboBox演示

这应该很简单,但我真的很难做到正确.我只需要一个简单的ttk ComboBox,它可以根据选择的变化更新变量.

在下面的示例中,我需要value_of_combo每次进行新选择时自动更新变量的值.

from Tkinter import *
import ttk

class App:

    value_of_combo = 'X'


    def __init__(self, parent):
        self.parent = parent
        self.combo()

    def combo(self):
        self.box_value = StringVar()
        self.box = ttk.Combobox(self.parent, textvariable=self.box_value)
        self.box['values'] = ('X', 'Y', 'Z')
        self.box.current(0)
        self.box.grid(column=0, row=0)

if __name__ == '__main__':
    root = Tk()
    app = App(root)
    root.mainloop()
Run Code Online (Sandbox Code Playgroud)

python tkinter ttk

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

Tkinter Spinbox小部件设置默认值

我有一个tkinter spinbox:

sb = Spinbox(frame, from_=1, to=12)
Run Code Online (Sandbox Code Playgroud)

我想将spinbox的默认值设置为4.我该怎么做?

我已经读过布莱恩建议设置的这个帖子

Tkinter.Spinbox(values=(1,2,3,4))
sb.delete(0,"end")
sb.insert(0,2)
Run Code Online (Sandbox Code Playgroud)

但我没有得到它背后的逻辑.

什么有删除和插入与设置默认值?

任何进一步的见解将不胜感激.

谢谢

tkinter

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

Python:访问另一个类的属性和方法

假设我有两个A和B类:

Class A:
   # A's attributes and methods here

Class B:
  # B's attributes and methods here
Run Code Online (Sandbox Code Playgroud)

现在我可以在B类对象中评估A的属性,如下所示:

a_obj = A()
b_obj = B(a_obj)
Run Code Online (Sandbox Code Playgroud)

我需要的是双向访问.如何访问A中B和B属性中的A属性?

python oop

8
推荐指数
2
解决办法
7127
查看次数

未设置对象引用

这里有类似的问题,但没有一个适合我的特定情况.

我有一个带有按钮的Windows窗体.该按钮附加到事件处理程序,如下所示:

private void mybutton_Click(object sender, EventArgs e)
{
    // do some processing here
}
Run Code Online (Sandbox Code Playgroud)

此外,还有一个组合框,其中选择的变化应该触发如上定义的按钮事件处理程序.

private void mycombobox_SelectedIndexChanged(object sender, EventArgs e)
{
    mybutton_Click(sender, e); // this is the line which pops up the dialog
}
Run Code Online (Sandbox Code Playgroud)

代码在运行时完全按预期工作,但我在编译时得到一个对话框提示,其中显示:

你调用的对象是空的

没有其他错误或警告.

谷歌搜索告诉我,如果程序试图访问设置为null的引用类型变量的成员,则此消息是错误.

但是,当我在调试模式下运行此代码时,发送方和事件(e)变量都不为空.

那么为什么会弹出这个对话框呢?

如果这是一个错误或警告 - 它应该显示为错误或警告但不会发生这种情况.

这是截图: 在此输入图像描述

编辑:回答评论中提出的问题

您可以在屏幕截图中看到没有错误.

该程序运行良好 - 只需弹出这个

弹出窗口是由line:mybutton_Click(sender, e);在组合框selectedIndexChanged功能中引起的.

在处理过程mybutton_Click(sender, e)中不使用任何发送者或e参数.

我还没有安装任何VS扩展.

.net c#

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

root.overrideredirect和<Any-KeyPress>绑定

我希望以下程序退出<Any-KeyPress>活动.

from tkinter import *

root = Tk()
root.overrideredirect(True)
root.bind('<Any-KeyPress>', lambda e: root.destroy())
root.mainloop()
Run Code Online (Sandbox Code Playgroud)

这适用于Windows操作系统.但是,除非我root.overrideredirect(True)从上面的代码中删除该行,否则这在Ubuntu上不起作用.

这是预期的行为吗?

或者有没有办法让我的程序在仍然使用的同时工作root.overrideredirect(True)

编辑


我刚刚在SO看到了类似的问题,Bryan Oakley建议使用root.focus_force()它,但它没有帮助.

编辑2


我使用的root.attributes('-fullscreen', True)不是root.overrideredirect(True)这里建议的那样,现在似乎有效.

python events binding tkinter

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

运行配置 - 运行多个阻止脚本

我想一次运行四个不同的脚本文件中的4个不同的服务器脚本.

我尝试按如下方式设置运行配置:

在此输入图像描述

但是,由于服务器在循环中监听,因此四个程序中的每一个都是阻塞的.

在当前设置中(如上所示),Pycharm运行在下面的"Before Launch"部分中指定的第一个服务器并停在它.

有没有办法一次运行所有四个服务器脚本Run Configurations

pycharm

5
推荐指数
0
解决办法
501
查看次数

标签 统计

python ×6

tkinter ×5

ttk ×2

.net ×1

binding ×1

c# ×1

events ×1

loops ×1

multidimensional-array ×1

oop ×1

pycharm ×1

python-2.7 ×1