Ubuntu Quickly PyGTK 和 Glade3
我已经使用Ubuntu好几年了,一直在寻找一个适合开发的环境,想做一些我心里想的事情。找到一个让我觉得舒服的集成环境真是让人沮丧。最近我发现了Ubuntu Quickly,觉得它看起来不错,特别是对于像我这样有Windows MS Access和VBA背景的人。所以我试了一下,使用DesktopCouch在几天内做出了我的第一个应用。
不过我发现DesktopCouch现在不太受欢迎,但我不想为了我的小应用去用SQL,于是决定使用KirbyBase,到目前为止一切顺利。
我已经在转换上走了很远(见截图),但是我就是搞不懂对话框的屏幕。图中的对话框在我运行应用时会显示,但它不应该在用户点击添加或编辑按钮之前就显示。
我已经尝试了三天,想要在按钮被点击时显示、展示或者让对话框可见的语法,但就是搞不定。
我试着把它设置成一个单独的Ui文件,就像关于和偏好设置那样,但这让我更加困惑。
我觉得答案可能很明显,但经过三天我还是需要帮助。目前主窗口的代码也附上了,我想在OnAddSlang这个程序里显示对话框,收集数据等等。
顺便说一下,我也是Python的新手。
提前谢谢你的帮助。
Michael![ScreenDump
]1.
enter code here
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
### BEGIN LICENSE
# This file is in the public domain
### END LICENSE
import sys
import os
import gettext
from gettext import gettext as _
gettext.textdomain('ozslang')
import gtk
import logging
logger = logging.getLogger('ozslang')
from kirbybase import KirbyBase, KBError #Set up KirbyBase Database
from ozslang_lib import Window
from ozslang.AboutOzslangDialog import AboutOzslangDialog
from ozslang.PreferencesOzslangDialog import PreferencesOzslangDialog
from ozslang.EntryOzslangDialog import EntryOzslangDialog
FILE_EXT = "tbl"
# See ozslang_lib.Window.py for more details about how this class works
class OzslangWindow(Window):
__gtype_name__ = "OzslangWindow"
def finish_initializing(self, builder): # pylint: disable=E1002
"""Set up the main window"""
super(OzslangWindow, self).finish_initializing(builder)
self.AboutDialog = AboutOzslangDialog
self.PreferencesDialog = PreferencesOzslangDialog
# Code for other initialization actions should be added here.
# Set up KirbyBase Database - Check if Created if not Create it
# Otherwise Check Read it and Print out Results.
db = KirbyBase()
dbTable = "slang.tbl"
# Table has Record No, Slang, Meaning, Useage, Is Common, Locality and Comment.
# Fields are Integer, String, String, String, Boolean, String and String.
# Check if the table exists.
if os.path.exists('slang.tbl'):
boolIsCreated = True
print boolIsCreated
#recno = db.insert(dbTable, ['Pie Hole', 'Mouth', 'Shut your pie hole', True, 'Australia Wide', 'No Comments 2'])
result = db.select('slang.tbl', ['recno'], ['*'])
print result
barMsg = 'Slang Table is in current directory'
self.statusbar = builder.get_object("statusbar1")
self.statusbar_cid = self.statusbar.get_context_id("Status")
self.statusbar.push(self.statusbar_cid, barMsg)
else:
#If it does not exist in this location, create it.
result = db.create('slang.tbl', ['slang:str', 'meaning:str', 'use:str',
'iscommon:bool', 'locality:str', 'comment:str'])
print 'Slang Table Created'
barMsg = 'Slang Table Created'
self.statusbar = builder.get_object("statusbar1")
self.statusbar_cid = self.statusbar.get_context_id("Status")
self.statusbar.push(self.statusbar_cid, barMsg)
print 'at end of slang table open create'
def on_EditSlang(self, widget):
"""Called when the user wants to edit a wine entry"""
print "In Edit Function"
pass_
def OnAddSlang(self, widget):
print 'In Add Function'
#Called when the use wants to add a slang
EntryOzslangDialog.hasfocus = True
print 'after dialog...'
def on_btnOK_clicked(self,widget):
pass
def on_btnCancel_clicked(self,widget):
pass
def _on_close(self, window):
pass
1 个回答
最后,事情变得简单了,只要知道了秘密。我只需要知道对话框需要通过构建器来引用,像这样:
entrydialog = self.builder.get_object("EntryDialog")
entrydialog.hide()
当然,当用户点击添加按钮时,会使用show()选项再次显示窗口,以便输入数据。
我知道我遇到的是一个基本的语法问题,但我花了超过三天的时间,时不时地在其他项目之间搜索,才找到与Ubuntu Quickly、Glade 3.10和PyGtk+相关的答案。没有一个视频或示例提到对话框屏幕,虽然有成千上万的例子展示如何使用早期版本的Glade来构建用户界面,但这似乎违背了使用Glade和Quickly的初衷。
我必须说,Glade3和Glade2以及相关的Gtk材料之间的差异真是惊人,Glade3的资源不多,虽然有的还不错,但就是不够深入展示新功能。
无论如何,感谢这个空间让我发泄一下,当我完成应用程序时,我会考虑写个示例分享给大家。
大家加油 - 继续保持好工作
迈克尔 Yackandandah