我正在尝试制作一个“类似办公室”的 TextView。那是:
这就是我想出的,它实际上表现得像它应该的那样,除了如果你的光标离开视口(viewport)它不会滚动,例如当你写一个需要比窗口当前宽度更多空间的行时。
保持视口(viewport)“同步”的最佳方法是什么?我必须创建自定义视口(viewport)吗?
提前致谢!
#!/usr/bin/env python2
# encoding: utf-8
import gtk
class SheetTextView(gtk.TextView):
WIDTH = 700
def __init__(self):
gtk.TextView.__init__(self)
self.set_wrap_mode(gtk.WRAP_WORD)
self.set_size_request(self.WIDTH, -1)
self.connect('size-allocate', self._on_size_allocate)
def _on_size_allocate(self, widget, event, data=None):
# Reset left/right margin to simulate a fixed line width
x, y, width, height = self.get_allocation()
if width > self.WIDTH:
margin = (width - self.WIDTH) / 2
self.set_left_margin(margin)
self.set_right_margin(margin)
if __name__ == "__main__":
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
window.connect('delete_event', gtk.main_quit)
view = SheetTextView()
scroll = gtk.ScrolledWindow()
scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
scroll.add_with_viewport(view)
window.add(scroll)
window.show_all()
gtk.main()
最佳答案
你的意思是这样的?
Dropbox link
请注意,这只是一个测试,它现在所做的只是在必要时更改大小,
这是你的意思吗?
如果是这样,请告诉我,我会修复错误并改进。
编辑:请注意这只是临时代码,乱码......
关于python - PyGTK:制作一个行为类似于 OpenOffice 的 TextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436614/