小编Mes*_*ion的帖子

如何在Ubuntu中使用PyGTK或GTK打开列表?

如何在PyGTK或GTK或其他编程语言中打开列表?在Ubuntu?

编辑:

我想在桌面上获取列表路径打开​​的目录!

python gtk ubuntu pygtk window-management

7
推荐指数
2
解决办法
7522
查看次数

如何获得母语的语言名称?

这是我第一次使用ICU API,并且很难找到我认为非常简单的内容:以本地语言(而不是英语)获得给定的语言环境/语言名称

例子:

fr    -> Français
en    -> English
pt_BR -> Português Brasileiro, or "Português (Brasil)"
es_ES -> Español Iberico, or "Español (España)"
Run Code Online (Sandbox Code Playgroud)

作为参考,babel我可以使用任何语言获得给定的语言环境名称,native是默认语言:

>>> import babel
>>> locale = babel.Locale.parse('pt_BR')
>>> locale.get_display_name()
português (Brasil)
>>> locale.get_display_name('fr')
portugais (Brésil)
>>> locale.get_display_name('en')
Portuguese (Brazil)
Run Code Online (Sandbox Code Playgroud)

那么,如何在ICU中做同样的事情?由于我使用的是PyICU,因此最欢迎使用python中的示例,但是Java / C / C ++也很好,因为我的问题是API而不是语言。

谢谢!

python icu

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

在 Python 中检测 NUMLOCK / CAPSLOCK / SCRLOCK 按键/按键

在我正在开发的游戏中,我想检测NUMLOCK 按键(或keyup),例如在按下时注册“回调”函数。

我并不是要求在给定时刻读取它的状态,我已经可以做到这一点,我也没有兴趣改变它的值。这是关于在按键发生时意识到按键的情况,这样我就不必每隔十分之一秒左右轮询一次其状态。

游戏使用的curses,目前是封锁getch()。Curses 不会检测NUMLOCK按键,我从来没有想到它会检测到(与 LED 相关的键盘不会“产生”任何按键),我想知道是否有任何方法可以做到这一点,这比用 a 替换主 Curses 循环更好非阻塞getch()并调用keyboard_leds()函数来读取当前状态。

例如:我可以在初始化curses后启动一个新线程,将其stdscr屏幕作为参数传递,并且该线程将为按键事件注册一个回调函数(例如,special_keypress()NUMLOCK。因此,该函数只会keyboard_leds()在需要时调用,然后更新stdscr

我不确定这是否可行,而且我知道我可能必须深入研究一些依赖于体系结构的东西(内核/X11等),所以如果跨平台解决方案不可能,那么我对只使用 Linux 的系统很满意。

python keyboard curses num-lock

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

如何使用 PyGI 使用 Wnck 获取窗口列表?

我刚开始使用 PyGI(在 Ubuntu Natty 上),尽管我以前从未使用过 pygtk。不过,我在 wxPython 程序中使用过 wnck,获取当前打开的窗口列表很容易。在 PyGI 中,窗口列表始终为空。相关代码位:

from gi.repository import Gtk, Wnck

while Gtk.events_pending():
    Gtk.main_iteration()
#... in my app class...
    screen = Wnck.Screen.get_default()
    wins = screen.get_windows()
Run Code Online (Sandbox Code Playgroud)

与此,wins == []。谢谢!

python gtk pygtk pygobject wnck

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

在python中学习队列模块(如何运行它)

最近引入了队列设计,关于延迟处理能力以及实现"FIFO"等.

查看文档以尝试获取示例队列,以了解如何在我自己的设计/程序中实现它.但我遇到运行此代码的问题:

import queue

def worker():
    while True:
        item = q.get()
        do_work(item)
        q.task_done()

def main():

    q = queue.Queue(maxsize=0)
    for i in range(num_worker_threads):
         t = Thread(target=worker)
         t.daemon = True
         t.start()

    for item in source():
        q.put(item)

    q.join()       # block until all tasks are done

main()
Run Code Online (Sandbox Code Playgroud)

问题:希望有人解释for循环正在做什么,我只是运行代码时出错,所以我不得不遗漏一些东西.

问题发生错误: NameError:未定义全局名称'num_worker_threads'

谢谢-Python新手 -

python queue multithreading python-3.x

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

Bash Scripting:如果行以(或匹配)另一个字符串开头,则替换(或删除)文件中的字符串

假设像这样的ini风格的文件,

[Group]
Icon=xxx.ico
Title=An Image Editor
Description=Manipulates .ico, .png and .jpeg images
Run Code Online (Sandbox Code Playgroud)

我想在以(或匹配)"Icon ="开头的行中替换/删除".ico"

我在尝试这个:

oldline="`cat "$file" | grep "Icon="`"
newline="`echo "$oldline" | tr ".ico" ".png"`"
cat "$oldfile" | tr "$oldline" "$newline" > $file
Run Code Online (Sandbox Code Playgroud)

然后我意识到这tr与我想的完全不同.它不是一个传统的"替换为此"功能.所以我想正确的方法是使用sed.但:

  • 我从未使用sed过.不知道它是如何工作的.这有点矫枉过正吗?
  • 如果最明确的方式是真的使用sed,鉴于它是如此强大,有没有任何优雅的方法来实现这一点,而不是这个"获取行 - >修改行 - >替换oldline for newline in file"方法?

笔记:

  • 我不能全局替换".ico",我知道这会更容易,我必须将替换限制为Icon行,否则Description行也会改变.
  • 我是Linux中的shell脚本新手,所以我不仅要寻找解决方案本身,还要寻找"正确"的方法.优雅,易读,传统等

提前致谢!

编辑:

感谢你们!这是最终的脚本,作为参考:

#! /bin/bash
# Fix the following WARNING in ~/.xsession-errors
# gnome-session[2035]: EggSMClient-WARNING: Desktop file '/home/xxx/.config/autostart/skype.desktop' has malformed Icon key 'skype.png'(should not …
Run Code Online (Sandbox Code Playgroud)

linux string bash

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

将ASCII字符转换为"<Uxxx>"unicode表示法的脚本

我正在对Linux语言环境文件/usr/share/i18n/locales(如pt_BR)进行一些更改,并且%d-%m-%Y %H:%M必须在Unicode中指定格式字符串(如),其中每个(在本例中为ASCII)字符表示为<U00xx>.

所以像这样的文字:

LC_TIME
d_t_fmt "%a %d %b %Y %T %Z"
d_fmt   "%d-%m-%Y"
t_fmt   "%T"
Run Code Online (Sandbox Code Playgroud)

一定是:

LC_TIME
d_t_fmt "<U0025><U0061><U0020><U0025><U0064><U0020><U0025><U0062><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
d_fmt   "<U0025><U0064><U002D><U0025><U006D><U002D><U0025><U0059>"
t_fmt   "<U0025><U0054>"
Run Code Online (Sandbox Code Playgroud)

因此,我需要一个命令行脚本(无论是bash,Python,Perl还是其他东西),它会接受输入%d-%m-%Y并将其转换为<U0025><U0064><U002D><U0025><U006D><U002D><U0025><U0059>.

在输入字符串中的所有字符将ASCII字符(从0x200x7F),所以这实际上是一个票友"字符到十六进制的字符串"的转换.

有人可以帮帮我吗?我在bash脚本编写方面的技能非常有限,在Python中更糟糕.

优雅,解释的解决方案的奖金.

谢谢!

(顺便说一句,这将是我之前的问题的"反向"脚本)

python string bash ascii

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