在浏览了 PyGTK 库和教程之后,我还没有找到我正在寻找的确切答案,或者我只是做错了什么......
无论如何,我正在学习 PyGTK 和 Glade,我正在编写一个简单的下载器应用程序的脚本。应用程序的 GUI 有三个复选框,然后是一个提交按钮。
我想要做的是在按下提交按钮后获取复选框的状态,这样我就可以继续我的脚本以根据复选框是真还是假来下载应用程序。
这是我到目前为止所拥有的。(仍处于早期阶段并从错误中学习)
Python脚本:
import sys
try:
import pygtk
pygtk.require("2.0")
except:
pass
try:
import gtk
import gtk.glade
except:
sys.exit(1)
class GladeTest:
def __init__(self):
#Set the Glade file
filename = "gui.glade"
builder = gtk.Builder()
builder.add_from_file(filename)
builder.connect_signals(self)
#Create our dictionay and connect it
dic = { "btnSubmit_clicked" : self.btnSubmit_clicked,
"chkboxDropbox_toggled" : self.chkboxDropbox_toggled,
"MainWindow_destroy" : gtk.main_quit }
def btnSubmit_clicked(self, widget):
self.button = gtk.ToggleButton("chkboxDropbox_toggled")
status = self.button.get_active()
print status
def chkboxDropbox_toggled(self, widget):
print ""
if __name__ …Run Code Online (Sandbox Code Playgroud) 我在Glade中有GtkLabel,X对齐设置为0,X pad设置为5,Expand设置为No.
标签位于水平框下方,并带有旋转按钮和另一个标签.
问题是X pad适用于左侧和右侧.
我希望它只适用于右侧.
我究竟做错了什么?
我正在使用Quickly创建一个应用程序,我想在我的窗口中添加一个Webkit小部件.我认为"应该足够容易",但一如既往,它可能不那么容易.
从我添加的那一刻起import webkit,应用程序无法启动.
robin@RobinJ:~/Ubuntu One/Python/gtkreddit$ quickly run
/usr/lib/python2.7/dist-packages/gobject/constants.py:24: Warning: g_boxed_type_register_static: assertion `g_type_from_name (name) == 0' failed
import gobject._gobject
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: specified class size for type `PyGtkGenericCellRenderer' is smaller than the parent type's `GtkCellRenderer' class size
from gtk import _gtk
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:40: Warning: g_type_get_qdata: assertion `node != NULL' failed
from gtk import _gtk
Run Code Online (Sandbox Code Playgroud)
我正在使用线程进行定时计数(并在 PyGTK 窗口中刷新内容)。它位于一个可以改变其范围的循环中。在每次迭代结束时,计数器增加并打印数据。我想要做的是在每个滴答声结束时在另一个类中接收一个 bang 及其数据。
解决方案可能与套接字有关,但到目前为止我正在努力避免这种情况,那么实现这一目标的最佳方法是什么?
我在另一个应用程序中使用PyGTK接受用户输入。我正在构建一个包含很多“检查按钮”的窗口,根据响应,我需要继续。
问题是在python中,当我调用window函数及其操作时,程序是否不等待window的响应?如何使它能够等待来自窗口的响应?
我也不知道是否可以使用对话框而不是窗口,因为我尝试向对话框中添加检查按钮,但效果不佳。如果不适合使用窗口,那么有人可以帮助我进行对话吗?
谢谢你的帮助。
我不明白gtk.Treeview()列表模型是如何工作的:
据我所知,我必须将 lismodel 包装在 a 中,gtk.TreeModelSort()但是当我这样做时,我无法再访问 listmodel 方法了..
lm = gtk.ListStore(object)
listmodel = gtk.TreeModelSort(lm)
for f in files:
listmodel.append([f])
return listmodel
Run Code Online (Sandbox Code Playgroud)
AttributeError: 'gtk.TreeModelSort' 对象没有属性 'append'
我使用gtk3我发现它使用RGBA用于表现颜色,但(红,绿,蓝,alpha)非整间0-255但之间浮动点数0-1.0,所以我不知道如何从转换rgba 到十六进制,反之亦然
我试过这段代码,但它似乎不起作用:
def convert_to_hex(rgba_color) :
red = str(hex(int(rgba_color.red*255)))[2:].capitalize()
green = str(hex(int(rgba_color.green*255)))[2:].capitalize()
blue = str(hex(int(rgba_color.blue*255)))[2:].capitalize()
return '0x' + red + green + blue
Run Code Online (Sandbox Code Playgroud) 我想使用gtk Treeview显示两级分层数据(使用模型gtk Treestore)
数据采用以下格式:
**First(parent)** level
col_a, col_b, col_c, col_d, col_e
val_a, val_b, val_c, val_d, val_e
**Second(child)** level
col_x, col_y, col_z
val_x, val_y, val_z
Run Code Online (Sandbox Code Playgroud)
数据层次结构如下:
> val_a1, val_b1, val_c1, val_d1, val_e1
val_x1, val_y1, val_z1
val_x2, val_y2, val_z2
> val_a2, val_b2, val_c2, val_s2, val_e2
val_x3, val_y3, val_z3
> val_a3, val_b3, val_c3, val_d3, val_e3
> val_a4, val_b4, val_c4, val_d4, val_e4
val_x4, val_y4, val_z4
val_x5, val_y5, val_z5
Run Code Online (Sandbox Code Playgroud)
以下pygtk代码是我尝试过的(修改了gtk教程中的代码)
import pygtk
pygtk.require('2.0')
import gtk
data = [
[('val_a1', 'val_b1', 'val_c1', 'val_d1', 'val_e1'), ('val_x1', 'val_y1', …Run Code Online (Sandbox Code Playgroud) 假设我在内存中读取了一个 svg 文件。操作字符串(更改颜色、渐变等)后,我不想将(现已修改的)svg“文件”包含在使用 PyGTK3 编写的图形用户界面中。最简单的方法是将 svg 再次保存为文件并保存为类似的文件
Gtk.Image.new_from_file(modified_svg)
Run Code Online (Sandbox Code Playgroud)
由于我不想经常这样做,因此有很多不必要的数据从慢速硬盘写入/读取。有没有办法直接从内存中的 svg 字符串创建图像?(我想到了类似于 pixbuf 的东西,但我找不到东西)
我正在尝试使用 GTK3 库和 pycairo 在 python3 中制作一些简单的动画。
我一直试图找到简单的单文件示例但无济于事,但我确信它是可行的。
我找到的最接近的是:https://cairographics.org/cookbook/animationrotation/,但这是在 python2 中,库/依赖项完全不同。
有没有人能指点我一个体面的来源,或对上述代码的修改?
谢谢!