国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【c/python】用GTK實現(xiàn)一個帶菜單的窗口

這篇具有很好參考價值的文章主要介紹了【c/python】用GTK實現(xiàn)一個帶菜單的窗口。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、用python

在GTK中創(chuàng)建一個帶菜單的窗口,可以通過使用`Gtk.MenuBar`、`Gtk.MenuGtk.MenuItem`組件來構(gòu)建菜單。以下是一個基本的例子,展示了如何使用Python的`PyGObject`庫創(chuàng)建一個簡單的帶菜單欄的GTK窗口。

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class MenuExampleWindow(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="Menu Example")

        self.set_default_size(200, 200)

        # Create a vertical box to pack widgets into
        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6)
        self.add(vbox)

        # Create a MenuBar and append items
        menubar = Gtk.MenuBar()
        filemenu = Gtk.Menu()
        file_item = Gtk.MenuItem("File")
        file_item.set_submenu(filemenu)
        
        # File menu items
        new_item = Gtk.MenuItem("New")
        filemenu.append(new_item)
        open_item = Gtk.MenuItem("Open")
        filemenu.append(open_item)
        quit_item = Gtk.MenuItem("Quit")
        quit_item.connect("activate", Gtk.main_quit)
        filemenu.append(quit_item)

        # Append the rest of the items to the menubar
        menubar.append(file_item)

        vbox.pack_start(menubar, False, False, 0)

        # Create a label to show the content area (for example purpose)
        self.label = Gtk.Label("Hello, this is the content area!")
        vbox.pack_start(self.label, True, True, 0)

# Initialize and run the application
win = MenuExampleWindow()
win.connect("destroy", Gtk.main_quit)
win.show_all()
Gtk.main()

在這個例子中:
- 我們創(chuàng)建了一個窗口類`MenuExampleWindow`來包含菜單的邏輯。
- 使用`Gtk.MenuBar`, Gtk.Menu, 和 Gtk.MenuItem來創(chuàng)建菜單條和其子菜單項。
- 連接了"Quit"菜單項的"activate"信號到`Gtk.main_quit`函數(shù)以便退出程序。
要運行此代碼,保證已經(jīng)安裝了Python和PyGObject。在Linux系統(tǒng)上,通??梢允褂冒芾砥鱽戆惭bPyGObject。例如,在Ubuntu上,可以使用以下命令安裝:

sudo apt-get install python3-gi python3-gi-cairo gir1.2-gtk-3.0

在Windows上,可能需要使用MSYS2或其他方式來安裝GTK和PyGObject,具體的安裝步驟可能會比較復(fù)雜,需要下載GTK的編譯版本或使用適當?shù)陌芾砥鱽戆惭b。

GTK+原本是用C語言開發(fā)的,它是一套用于創(chuàng)建圖形用戶界面(Graphical User Interface, GUI)【c/python】用GTK實現(xiàn)一個帶菜單的窗口,編程,# C語言,# python,linux的多平臺工具集,最初由GIMP項目開發(fā),后來成為GNOME桌面環(huán)境的一部分。由于GTK+的可移植性和開放性,它已經(jīng)被綁定到許多其他編程語言中,包括Python、C++、Perl、Ruby等。
使用Python作為創(chuàng)建GTK+窗口的語言有幾個好處:
1. 簡潔性:Python語法簡單明了,使得創(chuàng)建GUI變得更加直觀和快速。
2. 開發(fā)效率:Python作為一種解釋性語言,允許快速迭代和調(diào)試,有利于提高開發(fā)效率。
3. 廣泛的應(yīng)用:因為Python的普及,很多開發(fā)者更傾向于使用Python來快速搭建原型和實現(xiàn)應(yīng)用程序。
4. 強大的社區(qū)支持:Python社區(qū)龐大,這意味著在開發(fā)過程中遇到問題時容易得到支持。
基于以上原因,許多開發(fā)者在開發(fā)GTK+應(yīng)用時選擇了Python。PyGObject是Python的一個庫,它為GTK+提供了Python綁定,使得Python開發(fā)者能夠使用純Python代碼創(chuàng)建和運行GTK+應(yīng)用程序。

但如果需要或偏好在C語言中使用GTK+,完全可以使用C語言來實現(xiàn)。以下是C語言的例子,展示如何創(chuàng)建帶有菜單的GTK+窗口:

二、用C

示例1

#include <gtk/gtk.h>

static void activate(GtkApplication *app, gpointer user_data) {
    GtkWidget *window;
    GtkWidget *menubar;
    GtkWidget *file_menu;
    GtkWidget *file_menu_open;
    GtkWidget *file_menu_quit;
    GtkWidget *file_menu_item;

    window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "Menu Example");
    gtk_container_set_border_width(GTK_CONTAINER(window), 10);

    // Create a MenuBar and a Menu
    menubar = gtk_menu_bar_new();
    file_menu = gtk_menu_new();

    // Create a file menu and add it to the menubar
    file_menu_item = gtk_menu_item_new_with_label("File");
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(file_menu_item), file_menu);
    gtk_menu_shell_append(GTK_MENU_SHELL(menubar), file_menu_item);

    // Add Open & Quit items to the file menu
    file_menu_open = gtk_menu_item_new_with_label("Open");
    gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_menu_open);

    file_menu_quit = gtk_menu_item_new_with_label("Quit");
    g_signal_connect_swapped(file_menu_quit, "activate", G_CALLBACK(g_application_quit), G_OBJECT(app));
    gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_menu_quit);

    // Assemble everything and show
    gtk_container_add(GTK_CONTAINER(window), menubar);
    gtk_widget_show_all(window);
}

int main(int argc, char **argv) {
    GtkApplication *app;
    int status;

    app = gtk_application_new("org.example.menubar", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);

    status = g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);

    return status;
}

編譯:

gcc `pkg-config --cflags gtk+-3.0` -o gtk_win gtk_win.c `pkg-config --libs gtk+-3.0`

在這個C語言版本的例子中,我們創(chuàng)建一個`GtkApplication`,然后在`activate`回調(diào)中構(gòu)建窗口和菜單。菜單項("Open"和"Quit")被添加到文件菜單中,"Quit"菜單項連接了一個`g_application_quit`信號,當該菜單項被激活時,應(yīng)用程序?qū)⑼顺觥?br> 選擇使用哪種語言創(chuàng)建GTK+程序取決于個人或項目需求,每種語言的綁定都提供了基本一致的GTK+功能。

示例2

#include <gtk/gtk.h>

// 事件處理函數(shù)
static void activate(GtkApplication *app, gpointer user_data) {
    GtkWidget *window;
    GtkWidget *menu_bar;
    GtkWidget *menu_item;
    GtkWidget *file_menu;
    GtkWidget *file_menu_open;

    // 創(chuàng)建窗口
    window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "Window with Menu");
    gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);

    // 創(chuàng)建菜單欄
    menu_bar = gtk_menu_bar_new();
    menu_item = gtk_menu_item_new_with_label("File");
    gtk_menu_shell_append(GTK_MENU_SHELL(menu_bar), menu_item);
    
    // 創(chuàng)建'File'菜單的內(nèi)容
    file_menu = gtk_menu_new();
    gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item), file_menu);

    // 添加'Open'菜單項
    file_menu_open = gtk_menu_item_new_with_label("Open");
    gtk_menu_shell_append(GTK_MENU_SHELL(file_menu), file_menu_open);

    // 創(chuàng)建盒子,將菜單欄放在上邊,其余部分放下邊
    GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
    gtk_box_pack_start(GTK_BOX(vbox), menu_bar, FALSE, FALSE, 0);

    // 添加盒子到窗口
    gtk_container_add(GTK_CONTAINER(window), vbox);

    // 顯示所有窗口組件
    gtk_widget_show_all(window);
}

int main(int argc, char **argv) {
    GtkApplication *app;
    int status;

    // 創(chuàng)建GTK應(yīng)用
    app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
    
    // 運行應(yīng)用
    status = g_application_run(G_APPLICATION(app), argc, argv);
    
    // 退出應(yīng)用
    g_object_unref(app);

    return status;
}

編譯:

gcc `pkg-config --cflags gtk+-3.0` -o gtk_menu_app gtk_menu_app.c `pkg-config --libs gtk+-3.0`

pkg-config?工具用于獲取GTK+ 3庫的C標志和鏈接標志。

這將啟動GTK窗體程序,顯示一個菜單欄位于窗口上方的窗口。其中“File”菜單包含一個“Open”子菜單項。請注意,示例代碼中的菜單并沒有綁定實際的功能。如果需要讓菜單項響應(yīng)動作,您需要實現(xiàn)相應(yīng)的回調(diào)函數(shù)并將其與菜單項的信號關(guān)聯(lián)起來。

三、相關(guān)鏈接:

https://blog.csdn.net/eidolon_foot/article/details/135330336?spm=1001.2014.3001.5502文章來源地址http://www.zghlxwxcb.cn/news/detail-787481.html

到了這里,關(guān)于【c/python】用GTK實現(xiàn)一個帶菜單的窗口的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • windows編程(1)-第一個窗口程序

    文章首發(fā)于:My Blog 歡迎大佬們前來逛逛 win32的main函數(shù)入口點為 WinMain 或者 wWinMain ,他們包含四個參數(shù): 其中: hInstance:應(yīng)用程序當前窗口的實例句柄 hPrevInstance:應(yīng)用程序上一個窗口的實例句柄 lpCmdLine:應(yīng)用程序的命令行 nShowcmd:控制窗口的顯示方式 其中wWinMain與WinMai

    2023年04月10日
    瀏覽(21)
  • 【Python】實現(xiàn)一個類似于Glass2k的Windows窗口透明化軟件

    【Python】實現(xiàn)一個類似于Glass2k的Windows窗口透明化軟件

    ? ? ? ? 網(wǎng)上看到一款Windows下的窗口透明化工具Glass2k(Glass2k官網(wǎng)),可以簡單地通過快捷鍵實現(xiàn)任意窗口的透明化,還挺方便的,想用Python自己實現(xiàn)一下類似的功能。 ???????? 軟件已經(jīng)開源到 :窗口透明化小工具開源地址 ? ? ? ? 效果圖如下: ????????工具包含以

    2024年02月22日
    瀏覽(15)
  • Qt界面編程(四)—— QMainWindow(一個菜單欄、多個工具欄、多個停靠部件、一個狀態(tài)欄、一個中心部件)、資源文件

    Qt界面編程(四)—— QMainWindow(一個菜單欄、多個工具欄、多個??坎考?、一個狀態(tài)欄、一個中心部件)、資源文件

    目錄 1.?菜單欄 2.?工具欄 3.?狀態(tài)欄 4.???坎考ㄒ卜Q為鉚接部件、浮動窗口) 5.?核心部件(中心部件) 6.?使用UI文件創(chuàng)建窗口 6.1?UI設(shè)計窗口介紹 6.2?菜單欄 6.2.1 添加/刪除菜單欄 6.2.2 添加菜單 6.2.3?添加菜單項 6.2.4?添加多級菜單 6.3?工具欄 6.3.1 添加/刪除工具欄 6.3.

    2024年01月22日
    瀏覽(20)
  • linux環(huán)境編程(1): 實現(xiàn)一個單元測試框架-2

    在之前的文章中, 介紹了如何實現(xiàn)一個類似gtest的單元測試框架, 完整的項目代碼可以參考這里: https://github.com/kfggww/cutest . 近期對cutest的實現(xiàn)做了一些修改, 包括: Test Suite的聲明宏, 修改為TEST_SUITE 增加Test Suite的聲明宏TEST_SUITE_WITH. 可傳遞Suite的init和cleanup函數(shù), 在Suite中每個Cas

    2024年02月12日
    瀏覽(45)
  • Linux網(wǎng)絡(luò)編程二(TCP三次握手、四次揮手、TCP滑動窗口、MSS、TCP狀態(tài)轉(zhuǎn)換、多進程/多線程服務(wù)器實現(xiàn))

    Linux網(wǎng)絡(luò)編程二(TCP三次握手、四次揮手、TCP滑動窗口、MSS、TCP狀態(tài)轉(zhuǎn)換、多進程/多線程服務(wù)器實現(xiàn))

    TCP三次握手 TCP 三次握手 (TCP three-way handshake)是TCP協(xié)議建立可靠連接的過程,確??蛻舳撕头?wù)器之間可以進行可靠的通信。下面是TCP三次握手的詳細過程: 假設(shè)客戶端為A,服務(wù)器為B 1 、第一次握手(SYN=1,seq=500) A向B發(fā)送一個帶有SYN標志位的數(shù)據(jù)包,表示A請求建立連接。

    2024年02月06日
    瀏覽(42)
  • Erocool是一個編程項目 - 實現(xiàn)一個基于Python的簡單游戲

    在這篇文章中,我們將探討一個名為Erocool的編程項目,它是一個基于Python的簡單游戲。我們將詳細介紹這個項目的目標、功能和實現(xiàn)細節(jié),并提供相應(yīng)的源代碼。 Erocool項目的目標是創(chuàng)建一個有趣的游戲,其中玩家需要通過鍵盤輸入正確的答案來解決問題。這個游戲的主題是

    2024年01月23日
    瀏覽(24)
  • python機器人編程——用python實現(xiàn)一個寫字機器人

    python機器人編程——用python實現(xiàn)一個寫字機器人

    本篇我們構(gòu)建一個可以跟人一樣寫字的機器人python軟件。實現(xiàn)如下功能:打開一個寫字板,人類在屏幕上寫或畫出任意形狀,機器人同步在紙面上畫出和人類一樣的形狀,就好像人類在遠程操控機械臂,又或是機械臂是人的另一只手。這個軟件是可以擴展的,如果連上互聯(lián)網(wǎng)

    2024年02月05日
    瀏覽(23)
  • Linux網(wǎng)絡(luò)編程二(TCP圖解三次握手及四次揮手、TCP滑動窗口、MSS、TCP狀態(tài)轉(zhuǎn)換、多進程/多線程服務(wù)器實現(xiàn))

    Linux網(wǎng)絡(luò)編程二(TCP圖解三次握手及四次揮手、TCP滑動窗口、MSS、TCP狀態(tài)轉(zhuǎn)換、多進程/多線程服務(wù)器實現(xiàn))

    1、TCP三次握手 TCP 三次握手 (TCP three-way handshake)是 TCP協(xié)議建立可靠連接 的過程,確??蛻舳撕头?wù)器之間可以進行可靠的通信。下面是TCP三次握手的 詳細過程 : 假設(shè)客戶端為A,服務(wù)器為B。 (1) 第一次握手 第一次握手(SYN=1,seq=500) A向B發(fā)送一個帶有 SYN 標志位的數(shù)據(jù)包,

    2024年04月22日
    瀏覽(38)
  • Ubuntu20.4 Mono C# gtk 編程習練筆記(二)

    Ubuntu20.4 Mono C# gtk 編程習練筆記(二)

    界面設(shè)計習練后,下面寫一些程序設(shè)計心得。 先看一下程序總體結(jié)構(gòu),先在program.cs中找到main入口,在命名空間下是MainClass類,Main函數(shù)進入后首先建立應(yīng)用程序環(huán)境 Application.Init,然后對MainWindow進行實例化,顯示窗體并運行程序 Application.Run()。 main - application init - mainwindow{

    2024年01月21日
    瀏覽(24)
  • Ubuntu20.4 Mono C# gtk 編程習練筆記(三)

    Ubuntu20.4 Mono C# gtk 編程習練筆記(三)

    Mono對gtk做了很努力的封裝,即便如此仍然與System.Windows.Form中的控件操作方法有許多差異,這是gtk本身特性或稱為特色決定的。下面是gtk常用控件在Mono C#中的一些用法。 在工具箱中該控件的clicked信號雙擊后自動生成回調(diào)函數(shù)prototype,下面的函數(shù)當Button12點擊后其標簽名變?yōu)?/p>

    2024年01月18日
    瀏覽(52)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包