কিছু প্রোগ্রামে ব্ল্যাক হেডার উইজেটটি কী?


22

কিছু উবুন্টু প্রোগ্রামগুলিতে (উবুন্টু কন্ট্রোল প্যানেল, সিস্টেম সেটিংস) তবে বনশীতে নয়, উইন্ডোর উপরের অংশে গা dark় স্বরে উপাদানগুলি রয়েছে (অ্যাম্বিয়েন্স থিম সহ)। তবে আমি একটি স্ট্যান্ডার্ড উইজেট খুঁজে পাই না যা এটি স্বয়ংক্রিয়ভাবে করে।

এই রঙগুলি সমস্ত হাত দ্বারা সেট করা আছে (স্ট্যান্ডার্ড উইজেট + থিমের পরিবর্তে)? এবং যদি সেগুলি হাত দ্বারা সেট করা থাকে তবে থিমটিতে এগুলি কোথা থেকে আসবে (gtk_widget_modify_bg (উইজেট, GTK_STATE_NORMAL, এবং রঙ) এর পরামিতিগুলি কী)?

সম্পাদনা: এটি সাধারণ জিটিকে.টুলবার বলে মনে হচ্ছে না। যদি আমি নিম্নলিখিত কোডটি চালাই:

from gi.repository import Gtk
window = Gtk.Window()
window.set_default_size(200, -1)
window.connect("destroy", lambda q: Gtk.main_quit())
toolbar = Gtk.Toolbar()
window.add(toolbar)
toolbutton = Gtk.ToolButton(stock_id=Gtk.STOCK_NEW)
toolbar.add(toolbutton)
window.show_all()
Gtk.main()

আমি এখানে চিত্র বর্ণনা লিখুন এটির মতো একটি উইন্ডো পেয়েছি: যা সরঞ্জামদণ্ডের জন্য একটি অন্ধকার সুর নেই।

সম্পাদনা 2: যদিও জে জোহান-এডওয়ার্ডসের 'বিশেষ প্রসঙ্গে উইন্ডোয়ার টুলবার' উত্তর বেশিরভাগ প্রোগ্রামে সত্য, তবে উবুন্টুন-নিয়ন্ত্রণ-প্যানেলে এটি হয় না। এই প্রোগ্রামটিতে একটি GtkVBox রয়েছে যা যে কোনও উইজেটের (একটি সরঞ্জামদণ্ডের বিপরীতে) অন্তর্ভুক্ত করতে পারে। Gtk- থিম কীভাবে জানালার সেই অংশটি আঁকতে হয় তা আমি এখনও নির্ধারণ করতে অক্ষম। এখানে চিত্র বর্ণনা লিখুন

তবে যাইহোক: আপাতত একটি সরঞ্জামদণ্ডই আমার পক্ষে যথেষ্ট ...

উত্তর:


19

আপনি এই বোঝাতে চান?

জিটিকে 3 সরঞ্জামদণ্ড

তারা শুধু Gtk.Toolbarএস। বংশীর মতো কিছু অ্যাপ্লিকেশন সেগুলি ব্যবহার না করার কারণটি হ'ল তারা এখনও জিটিকে + 3 এ পোর্ট করেনি এবং নতুন থেরিংয়ের ক্ষমতা পেয়েছে যা সেই জাতীয় সরঞ্জামগুলি সক্ষম করে।

আপনার নিজস্ব পাইথন অ্যাপ্লিকেশনটি জিটিকে + 3 এ পোর্ট করতে আপনার পিআইজিটিকের পরিবর্তে পাইজিওজেক্ট ব্যবহার করতে হবে । 12.04 হিসাবে, দ্রুত ডিফল্টরূপে পিজিওজেক্ট প্রকল্প উত্পন্ন করবে।

আপনাকে primary-toolbarসরঞ্জামদণ্ডের শৈলীর প্রসঙ্গে যুক্ত করতে হবে। তাই ভালো:

toolbar = Gtk.Toolbar()
context = toolbar.get_style_context()
context.add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)

প্রশ্ন প্রসঙ্গে সেই প্রসঙ্গে প্রয়োগ করা হলে এর ফলাফল হয়:

ডেমো


আমি একটি Gtk.Toolbar এর উদাহরণ যুক্ত করেছি যা অন্ধকারের মতো দেখাচ্ছে না। সুতরাং আমি অনুমান করি এটি কোনও সাধারণ জিটিকে.টুলবার নয়?
xubuntix

Gtk.get_major_version()বলে 3, তবে আমি এখনও পুরানো সরঞ্জামদণ্ডটি পাচ্ছি। এটি from gi.repository import Gtkপাইথন 2 এবং পাইথন 3 উভয়ের মধ্যে রয়েছে।
স্টেফানো প্যালাজো

1
আপনি যে লিঙ্কটি পোস্ট করেছেন তার পিজিআইআই ডেমোটিতে সেগুলি নেই। হতে পারে অ্যাপ বিকাশকারীদের নিজেরাই স্টাইলিং প্রয়োগ করতে হবে?
স্টেফানো প্যালাজো

সারাদিন সকালে এই প্রাচীরের বিরুদ্ধে মাথা ঠেকিয়ে দেওয়ার জন্য ধন্যবাদ !! আগে এখানে অনুসন্ধান করা উচিত।
0x7c0

5

আপনার প্রশ্নের দ্বিতীয় অংশের সাথে, যা ছিল "টুলবারে ভিবিক্সকে কীভাবে যুক্ত করবেন", আপনাকে যা করতে হবে তা হ'ল এটি একটি জিটিকে.টুল আইটেমের মধ্যে আবদ্ধ করা, যেমন :.

...
self.toolbar = Gtk.Toolbar()
self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
tool_item = Gtk.ToolItem()
tool_item.add(self.box)
self.toolbar.insert(tool_item, 0)
...

আপনি কোনও সহায়ক ফাংশন তৈরি করে বা Gtk.Toolbar প্রসারিত করে এটিকে আরও সহজ করতে পারেন, উদাহরণস্বরূপ:

custom_toolbar.py

from gi.repository import Gtk

class CustomToolbar(Gtk.Toolbar):
    def __init__(self):
        super(CustomToolbar, self).__init__()
        ''' Set toolbar style '''
        context = self.get_style_context()
        context.add_class(Gtk.STYLE_CLASS_PRIMARY_TOOLBAR)

    def insert(self, item, pos):
        ''' If widget is not an instance of Gtk.ToolItem then wrap it inside one '''
        if not isinstance(item, Gtk.ToolItem):
            widget = Gtk.ToolItem()
            widget.add(item)
            item = widget

        super(CustomToolbar, self).insert(item, pos)
        return item

এটি কেবল যাচাই করে আপনি যে বস্তুটি সন্নিবেশ করানোর চেষ্টা করছেন তা কোনও সরঞ্জাম আইটেম এবং যদি তা না হয় তবে এটি একে একে ভিতরে আবৃত করে। ব্যবহারের উদাহরণ:

main.py

#!/usr/bin/python
from gi.repository import Gtk
from custom_toolbar import CustomToolbar

class MySongPlayerWindow(Gtk.Window):
    def __init__(self):
        super(MySongPlayerWindow, self).__init__(title="My Song Player")
        self.set_size_request(640, 480)

        layout = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
        self.add(layout)

        status_bar = Gtk.Statusbar()
        layout.pack_end(status_bar, False, True, 0)

        big_button = Gtk.Button(label="Play music")
        layout.pack_end(big_button, True, True, 0)

        ''' Create a custom toolbar '''
        toolbar = CustomToolbar()
        toolbar.set_style(Gtk.ToolbarStyle.BOTH)        
        layout.pack_start(toolbar, False, True, 0)

        ''' Add some standard toolbar buttons '''
        play_button = Gtk.ToggleToolButton(stock_id=Gtk.STOCK_MEDIA_PLAY)
        toolbar.insert(play_button, -1)

        stop_button = Gtk.ToolButton(stock_id=Gtk.STOCK_MEDIA_STOP)
        toolbar.insert(stop_button, -1)

        ''' Create a vertical box '''
        playback_info = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, margin_top=5, margin_bottom=5, margin_left=10, margin_right=10)

        ''' Add some children... '''
        label_current_song = Gtk.Label(label="Artist - Song Name", margin_bottom=5)
        playback_info.pack_start(label_current_song, True, True, 0)

        playback_progress = Gtk.ProgressBar(fraction=0.6)
        playback_info.pack_start(playback_progress, True, True, 0)

        '''
        Add the vertical box to the toolbar. Please note, that unlike Gtk.Toolbar.insert,
        CustomToolbar.insert returns a ToolItem instance that we can manipulate
        '''
        playback_info_item = toolbar.insert(playback_info, -1)
        playback_info_item.set_expand(True)        

        ''' Add another custom item '''       
        search_entry = Gtk.Entry(text='Search')
        search_item = toolbar.insert(search_entry, -1)
        search_item.set_vexpand(False)
        search_item.set_valign(Gtk.Align.CENTER)

win = MySongPlayerWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()

এটা তোলে মত হওয়া উচিত এই


1
রেকর্ডের জন্য, আপনি গ্লেড দিয়েও এটি করতে পারেন। GtkToolItem উইজেটের প্যালেটে উপস্থিত হয় না। পরিবর্তে আপনাকে বস্তু গাছের GtkToolbar এ ডান ক্লিক করতে হবে এবং একটি পৃথক সম্পাদনা উইন্ডো খুলতে "সম্পাদনা" নির্বাচন করতে হবে। "শ্রেণিবিন্যাস" ট্যাবে যান এবং শ্রেণিবিন্যাসে একটি নতুন অবজেক্ট যুক্ত করুন। ডিফল্ট অবজেক্ট-টাইপ হ'ল "বাটন," তবে আপনি "কাস্টম" নির্বাচন করতে পারেন। সেই "কাস্টম" আইটেমটি আসলে একটি খালি GtkToolItem। তারপরে আপনি নিয়মিত গ্লাইড ইন্টারফেস ব্যবহার করে সেই খালি আইটেমটি নির্বাচন করতে পারেন এবং এতে সাধারণত উইজেট যুক্ত করতে পারেন। এটি আমাকে কয়েক সেকেন্ডের মধ্যে একটি GtkToolbar এ একটি GtkEntry উইজেট যুক্ত করতে দেয়।
একরঙা প্রস্তুতকারক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.