我完全搞砸了我的分叉git仓库的主分支.
我想完全重置使用上游主仓库的内容推送到我的分支的主分支.我没有兴趣保留任何主分支更改或历史记录.
最简单的方法是删除我的分叉仓库并从上游项目中重新编译.但是,我在其他推动的分支机构工作,我不想失去.
那么如何用上游主站重置推送的主分支?
git clone https://myrepo.git
cd myrepo
git remote add upstream https://upstream.git
git fetch upstream
Run Code Online (Sandbox Code Playgroud)
我从哪里开始使用上游主站重置本地和远程主分支?
图片将解释标题:
在LMDE和Ubuntu 12.04下,我的GtkIconView看起来像这样 - 它在图标之间的间距方面是正确的:
在Ubuntu 12.10,13.04和Fedora 17下,相同的代码显示如下:
NB - 这是一个rhythmbox python插件 - 源代码在GitHub上
我检查了以下GtkIconView属性 - 它们在Ubuntu 12.04和错误显示的12.10版本之间完全相同.
当我将text_column或markup_column(图标下的文本)设置为可见列(即将值从-1更改为列号)时,会立即显示此显示行为.
如果文本列/标记列被隐藏(即值为-1),则显示在所有发行版上都是正确的.
由于它在完全相同的音乐集合上运行相同的代码 - 我只能推测Fedora 17/Ubuntu 12.10/13.04中较新的GTK库表现不同.
我的google-fu只发现了这个听起来相同的引用.然而,检查ubuntu-achievementment-viewer源代码并没有真正启发我.
有没有人遇到过这个?关于进一步调查的最佳方法的任何建议?
好的 - 我已经尝试将其简化为基本要素 - 这个简单的glade文件使用这个简单的代码会产生这个问题.然而,我仍然不知道造成这种视觉效果的原因:/
#!/usr/bin/env python from gi.repository import Gtk, GdkPixbuf window = Gtk.Window() window.connect('delete_event', Gtk.main_quit) ui = Gtk.Builder() ui.add_from_file('reproduce.ui') page = ui.get_object('main_box') window.add(page) ls = Gtk.ListStore(str, GdkPixbuf.Pixbuf) icon = GdkPixbuf.Pixbuf.new_from_file_at_size( str("/usr/share/icons/gnome/48x48/actions/zoom-out.png"), 90, 90) for i in …
我正在尝试做的是检测用户何时更改GtkStack中的可见子项.
我正在使用GtkStackSwitcher作为按照这种设计显示按钮的可见方式:
因此 - 当一个人点击/切换其中一个按钮时,我想执行一些处理.
我应该连接哪个事件来实现这一目标?
我看过Gtk.Stack和Gtk.StackSwitcher,但我没有看到任何明显的信号.关于最佳方式的任何想法?
这些似乎不是标准按钮 - 所以我不认为这种情况适用于'点击'事件.
我正在使用Ubuntu 14.04 Gtk + 3.10,python3
我正在为 Rhythmbox 开发一个 python 插件 - 它包含一个 GtkScrolledWindow 和一个子级 GtkIconView。IconView 由 Gtk.TreeModel 提供。
它看起来像这样:
目前,每个图标都是为树模型中的每一行绘制的,效率有些低下 - 每个图标都是来自文件的 GdkPixbuf。如果您有数千行,则可能需要相当长的时间才能使用每个图片图标完全更新整个图标视图。
我想要实现的是仅更新当前绘图区域中的图标 - 当用户滚动并释放滚动条(或通过键盘导航)时,新绘图区域中的图标应使用相关图片进行更新。
注意 - 此时树模型将完全填充 - 只有图标不会被加载。
这并不是我的专业领域 - 我正在寻找实现上述目标的最佳方法的指导。
具体来说 - 可以暴露哪些 Gtk+3 绘图区域信号(Gtk.ScrolledWindow / Gtk.IconView?)来编写 python 代码来计算应该更新哪些图标?
一幅画描绘了一千个单词...:
在我的Python 2.7应用程序中,我有一个按钮,单击该按钮会弹出一个菜单。
在某些情况下,此列表大于屏幕尺寸。
在Ubuntu 12.04(使用Gtk 3.4.2)中,这是可以的,因为您会看到滚动箭头(如右图所示)。
在Ubuntu 12.10 / 13.04和Fedora 17(使用Gtk 3.6)中,我得到了相同的菜单,但是没有滚动箭头,并且无法使用鼠标向上或向下滚动。
奇怪的是,如果我再次单击该按钮,则会再次出现滚动箭头。
因此,它看起来像是某种大小分配问题-它不是在第一个弹出窗口中计算出来的,而是在随后的弹出窗口中计算的
显然,新的GTK库已发生了某些变化-现在,显示大弹出菜单以确保显示滚动箭头的正确方法是什么?
有什么暗示我应该如何解决不同GTK版本之间的明显差异,以便获得一致的“首次单击时显示箭头”?
以下是演示此问题的简单python测试程序。
我无法使用GTKParasite进行诊断,因为只要您单击GtkParasite本身上的“检查”按钮,弹出窗口就会消失。
#-*-模式:python; 编码:utf-8;制表符宽度:4;indent-tabs-mode:nil; -*- #!/ usr / bin / env python 从gi.repository导入Gtk def popupclick(self,* args): popup.popup(无,无,无,无,0, Gtk.get_current_event_time()) 窗口= Gtk.Window() window.connect('delete_event',Gtk.main_quit) window.set_default_size(200,200) first_item =无 弹出窗口= Gtk.Menu() 对于我在范围(100)中: 标签='项目%d'%i 如果不是first_item: new_menu_item = Gtk.RadioMenuItem(label =标签) first_item = new_menu_item 其他: new_menu_item = Gtk.RadioMenuItem.new_with_label_from_widget( group = first_item,label = label) new_menu_item.show() popup.append(new_menu_item) 按钮= Gtk.Button() button.connect('clicked',popupclick) 主箱= Gtk.Box() mainbox.pack_start(button,True,True,0) scroller = Gtk.ScrolledWindow() scroller.add_with_viewport(mainbox) window.add(scroller) window.show_all() Gtk.main()
我试图通过给绘图一个微妙的阴影效果来增强我的应用程序的图形外观。我正在使用 python 和 cairo 绘图。
使用下面的示例代码,我可以用如图所示的图片绘制一个外圆和一个内圆。
我想要做的是用阴影效果替换那个外圆。
我想我需要使用线性梯度或径向梯度,但我找不到一个很好的例子来实现我想要实现的目标。
有人请指出我正确的方向吗?
from gi.repository import Gtk
from gi.repository import Gdk
from gi.repository import GdkPixbuf
import cairo
import math
class MyWindow (Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title='MyWindow')
darea = Gtk.DrawingArea()
darea.connect('draw', self.on_draw)
self.add(darea)
self.width, self.height = self.get_size()
filename = "/usr/share/backgrounds/Thingvellir_by_pattersa.jpg"
if self.width > self.height:
self.width = self.height
else:
self.height = self.width
self.width = self.width
self.height = self.height
self.pixbuf = GdkPixbuf.Pixbuf.new_from_file(filename)
self.pixbuf = self.pixbuf.scale_simple(self.width, self.width, GdkPixbuf.InterpType.BILINEAR)
def on_draw(self, widget, cr):
w = self.width
h = self.height …
Run Code Online (Sandbox Code Playgroud) 我正在尝试显示Gio.Menuitem的快捷键加速器
正如您所看到的,RandomAlbum菜单项没有显示加速器 - 但是,我添加了加速器并将其连接到Gio.MenuItem成功,因为menuitem响应键盘快捷键Alt+Z
我正在使用的代码片段如下:
action = Gio.SimpleAction.new(action_name, None)
app = Gio.Application.get_default()
app.add_accelerator("<alt>Z", "app."+action_name, None)
item = Gio.MenuItem()
item.set_detailed_action('app.' + action_name)
item.set_label("RandomAlbum")
app.add_plugin_menu_item('tools', "unique name", item)
Run Code Online (Sandbox Code Playgroud)
任何想法为什么加速器不显示 - 但仍然响应键盘控制?
完整的来源是:
我一直在快速浏览一下GtkStack的GTK 3.10文档.
它提到添加到GtkStack的子项被赋予属性"icon-name".
我的问题是 - 如何更改此属性的值.原因 - 我想将GtkStackSwitcher按钮更改为图标而不是文本,但我想对此进行编码 - 而不是使用GktBuilder UI.
如果您查看gtk3-demo
- Stack演示和UI文件,您可以看到GtkSwitcher有一个图标.
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<!-- interface-requires gtk+ 3.6 -->
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="title" translatable="yes">GtkStack</property>
<child>
<object class="GtkGrid" id="grid1">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
<object class="GtkStackSwitcher" id="switcher">
<property name="visible">True</property>
<property name="stack">stack</property>
<property name="halign">center</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkStack" id="stack">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="transition-type">crossfade</property>
<child>
<object class="GtkImage" id="image1">
<property name="visible">True</property>
<property …
Run Code Online (Sandbox Code Playgroud) 我对 Gtk 如何控制容器(例如 GtkBox)内的小部件大小感到非常困惑。请有人指导我解决这个问题的复杂性吗?
我有一个包含两个小部件的 GtkBox - 在示例中,这些只是两个 GtkButton。
第一个小部件应该只填充 GtkBox 容器内的可用空间。
我想强制的第二个小部件始终是一个物理正方形 - 因此随着正方形的扩大,第一个小部件的宽度将缩小。
一些示例代码将在这里有所帮助:
from gi.repository import Gtk
def on_check_resize(window):
boxallocation = mainbox.get_allocation()
width = 0
height = 0
if boxallocation.height >= boxallocation.width:
width = boxallocation.height
height = width
if boxallocation.width >= boxallocation.height:
width = boxallocation.width
height = width
secondbtn_allocation = secondbtn.get_allocation()
secondbtn_allocation.width = width
secondbtn_allocation.height = height
secondbtn.set_allocation(secondbtn_allocation)
win = Gtk.Window(title="Containers Demo")
win.set_border_width(10)
win.connect("delete-event", Gtk.main_quit)
mainbox = Gtk.Box()
firstbtn = Gtk.Button(label="just fills the space")
mainbox.pack_start(firstbtn, True, True, …
Run Code Online (Sandbox Code Playgroud)