小编fos*_*dom的帖子

如何将git master分支重置为分叉存储库中的上游分支?

我完全搞砸了我的分叉git仓库的主分支.

我想完全重置使用上游主仓库的内容推送到我的分支的主分支.我没有兴趣保留任何主分支更改或历史记录.

最简单的方法是删除我的分叉仓库并从上游项目中重新编译.但是,我在其他推动的分支机构工作,我不想失去.

那么如何用上游主站重置推送的主分支?


git clone https://myrepo.git
cd myrepo
git remote add upstream https://upstream.git
git fetch upstream
Run Code Online (Sandbox Code Playgroud)

我从哪里开始使用上游主站重置本地和远程主分支?

git

71
推荐指数
3
解决办法
4万
查看次数

是什么导致GtkIconView在不同GTK版本之间的不同显示行为?

图片将解释标题:

在LMDE和Ubuntu 12.04下,我的GtkIconView看起来像这样 - 它在图标之间的间距方面是正确的:

间距Ubuntu 12 04 RB 96

在Ubuntu 12.10,13.04和Fedora 17下,相同的代码显示如下:

间距Ubuntu 12 10 RB 97

NB - 这是一个rhythmbox python插件 - 源代码在GitHub上

我检查了以下GtkIconView属性 - 它们在Ubuntu 12.04和错误显示的12.10版本之间完全相同.

  • 项目 - 衬垫
  • 行间距
  • 列间距
  • 项宽度

当我将text_columnmarkup_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 …

python pygobject gtk3

9
推荐指数
1
解决办法
606
查看次数

如何检测GtkStack或GtkStackSwitcher的变化

我正在尝试做的是检测用户何时更改GtkStack中的可见子项.

我正在使用GtkStackSwitcher作为按照这种设计显示按钮的可见方式:

PIC

因此 - 当一个人点击/切换其中一个按钮时,我想执行一些处理.

我应该连接哪个事件来实现这一目标?

我看过Gtk.StackGtk.StackSwitcher,但我没有看到任何明显的信号.关于最佳方式的任何想法?

这些似乎不是标准按钮 - 所以我不认为这种情况适用于'点击'事件.

我正在使用Ubuntu 14.04 Gtk + 3.10,python3

python gtk gtk3

8
推荐指数
1
解决办法
650
查看次数

在 Gtk ScrolledWindow 中滚动时应该捕获哪些信号?

我正在为 Rhythmbox 开发一个 python 插件 - 它包含一个 GtkScrolledWindow 和一个子级 GtkIconView。IconView 由 Gtk.TreeModel 提供。

它看起来像这样:

在此输入图像描述

目前,每个图标都是为树模型中的每一行绘制的,效率有些低下 - 每个图标都是来自文件的 GdkPixbuf。如果您有数千行,则可能需要相当长的时间才能使用每个图片图标完全更新整个图标视图。

我想要实现的是仅更新当前绘图区域中的图标 - 当用户滚动并释放滚动条(或通过键盘导航)时,新绘图区域中的图标应使用相关图片进行更新。

注意 - 此时树模型将完全填充 - 只有图标不会被加载。

这并不是我的专业领域 - 我正在寻找实现上述目标的最佳方法的指导。

具体来说 - 可以暴露哪些 Gtk+3 绘图区域信号(Gtk.ScrolledWindow / Gtk.IconView?)来编写 python 代码来计算应该更新哪些图标?

python gtk pygobject gio

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

显示大弹出菜单的正确方法是什么?

一幅画描绘了一千个单词...:

在此处输入图片说明

在我的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 gtk pygobject gtk3

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

如何使用 cairo 创建圆形阴影效果?

我试图通过给绘图一个微妙的阴影效果来增强我的应用程序的图形外观。我正在使用 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)

python cairo

5
推荐指数
0
解决办法
739
查看次数

如何显示Gio.MenuItem的加速器

我正在尝试显示Gio.Menuitem的快捷键加速器

PIC

正如您所看到的,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)

任何想法为什么加速器不显示 - 但仍然响应键盘控制?

完整的来源是:

rhythmbox python-2.7 gtk3

4
推荐指数
1
解决办法
365
查看次数

如何更改GTK小部件(如堆栈)的属性?

我一直在快速浏览一下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)

python gtk pygobject gtk3

4
推荐指数
1
解决办法
1525
查看次数

如何更改 GTK 容器小部件的大小?

我对 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)

python pygobject gio gtk3

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

标签 统计

python ×7

gtk3 ×6

pygobject ×5

gtk ×4

gio ×2

cairo ×1

git ×1

python-2.7 ×1

rhythmbox ×1