AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

All perguntas(coding)

Martin Hope
Max Koretskyi
Asked: 2025-04-24 13:47:27 +0800 CST

Flex-basis=0 deveria substituir a largura, mas não o faz

  • 7

Li que flex-basis deveria substituir width. Mas, neste exemplo, ambos os contêineres têm flex-basis:0, mas o segundo também tem width:50px"defined" e isso claramente tem o efeito de tornar o tamanho igual.

Então estou intrigado com duas coisas relacionadas:

  1. por que flex-basis:0 não substituiu a largura (eu não esperaria nenhum efeito ao adicionar widthao css)
  2. por que flex-basis:0 não funcionou para definir o tamanho hipotético como 0, resultando na largura igual sem adicionar largura

Pelo que entendi da especificação :

Determine o tamanho da base flexível e o tamanho principal hipotético de cada item:

  1. Se o item tiver uma base flexível usada definida, esse será o tamanho da base flexível.
  2. O tamanho principal hipotético é o tamanho da base flexível do item fixado de acordo com seus tamanhos principais mínimo e máximo usados ​​(e limitando o tamanho da caixa de conteúdo a zero).

Portanto, o tamanho da base flexível está definido e deve ser resolvido como 0. O tamanho principal hipotético também deve ser resolvido como 0, pois há restrições de largura mínima/máxima.

    .container1, .container2 {
        width: 210px;
        height: 200px;
        padding: 10px;
        border: solid;
        display: inline-flex;
        box-sizing: border-box;

        div {
            margin: 1px;
            flex: 1 1 0;
        }

        & div:nth-child(1) {
            background: lightpink;
        }

        & div:nth-child(2) {
            background: lightblue;
        }
    }

    .container2 div {
        width: 50px;
    }
<div class="container1">
  <div>short</div>
  <div>looooooooooooooong</div>
</div>
<div class="container2">
  <div>short</div>
  <div>looooooooooooooong</div>
</div>

insira a descrição da imagem aqui

html
  • 1 respostas
  • 69 Views
Martin Hope
Kaven
Asked: 2025-04-24 13:42:08 +0800 CST

Como detectar o fim do arrasto?

  • 7

Eu tenho um NSWindow. Usando NSWindowDelegate, posso manipular eventos windowWillMove()e . é chamado uma vez, assim que o arrastar da janela começa, o que é ideal para reconhecer o início do arrasto.windowDidMove()windowWillMove()

No entanto, windowDidMove()ele é iniciado sempre que a janela se move, mesmo que o usuário ainda a arraste. Como reconhecer que o usuário finalizou o arrasto e a janela agora está em sua posição final?

macos
  • 1 respostas
  • 53 Views
Martin Hope
neubert
Asked: 2025-04-24 13:36:36 +0800 CST

ArgumentCountError: Poucos argumentos para funcionar, 0 foram passados, mesmo com o provedor de dados (PHPUnit 12)

  • 7

Estou tentando usar os dataProviders do PHPUnit 12 para fornecer dados a uma função para teste, mas não consigo fazer funcionar.

Aqui está meu teste de unidade (que fica em tests/TestTest.php):

<?php declare(strict_types=1);
use PHPUnit\Framework\TestCase;

final class TestTest extends TestCase
{
    public static function dataProvider(): array
    {
        return [['a'], ['b']];
    }

    #[DataProvider("dataProvider")]
    public function testTest($var): void
    {
        $this->assertTrue(true);
    }
}

Quando corro, ./vendor/bin/phpunit testsrecebo isso:

PHPUnit 12.0.0 by Sebastian Bergmann and contributors.

Runtime:       PHP 8.3.14

E                                                                   1 / 1 (100%)

Time: 00:00.019, Memory: 8.00 MB

There was 1 error:

1) TestTest::testTest
ArgumentCountError: Too few arguments to function TestTest::testTest(), 0 passed in C:\path\to\vendor\phpunit\phpunit\src\Framework\TestCase.php on line 1104 and exactly 1 expected

C:\path\to\tests\TestTest.php:12

ERRORS!
Tests: 1, Assertions: 0, Errors: 1.

Alguma ideia?

  • 2 respostas
  • 50 Views
Martin Hope
user1131153
Asked: 2025-04-24 13:00:42 +0800 CST

Como simplesmente combinar duas células que têm uma letra diferente, para verificação de conformidade

  • 5

Parece uma solução fácil, mas estou com um branco na cabeça.

insira a descrição da imagem aqui

Desculpas pela imagem, as pessoas dizem para inserir essas coisas como uma planilha do Excel e eu não vejo essa opção.

Atualmente meu =MATCH(A1291,Sheet4!$D$2:$D$1271,1)está dando resultados incríveis e contando com pessoas que eu verifico duas vezes e elas não terminaram o curso

O que preciso é de uma resposta simples (sim ou não), pode ser 1 ou 0 em uma célula... mas, como você pode ver, tenho cerca de 1.300 pessoas para verificar, e esse número está crescendo rapidamente, por isso preciso de uma solução antes que ela fuja do meu controle.

Ambas as listas vêm de duas colunas cada e eu tive que concatená-las em uma célula, pensando que seria mais fácil. É esse o problema?

Alguém pode ajudar?

excel
  • 1 respostas
  • 61 Views
Martin Hope
Michael
Asked: 2025-04-24 12:31:52 +0800 CST

Javascript Atribuir a mesma string a várias propriedades

  • 5

Estou criando um formulário onde o usuário seleciona os menus suspensos de 1 a 5. Com base no que ele seleciona para o Menu Suspenso 1, o Menu Suspenso 2 exibirá opções específicas, selecionar o Menu Suspenso 2 definirá o Menu Suspenso 3, e assim por diante.

Quando você chegar ao Drop Down 3, algumas dessas opções no Drop Down 3 usarão as mesmas opções do Drop Down 4.

Atualmente, estou escrevendo uma matriz de quando você seleciona uma opção específica, mas em vez de repetir o texto do Drop Down 4 várias vezes para acompanhar cada opção do Drop Down 3, há uma maneira de escrever as strings uma vez e aplicá-las a várias propriedades?

Veja como eu exibi as opções e quero escrever "Criação de conta", "Exclusão de conta" e "Modificação de conta" apenas uma vez, mas aplicá-las à Escolha 1, 2, 3, etc.

var Tier4ByTier3 = {
   "Choice 1": [
       " ";
       "Account Creation",
       "Account Deletion",
       "Account Modification",
   ],
   "Choice 2": [
       " ";
       "Account Creation",
       "Account Deletion",
       "Account Modification",
   ],
   "Choice 3": [
       " ";
       "Account Creation",
       "Account Deletion",
       "Account Modification",
   ],
}

Este é o meu JavaScript que extrai essas opções:

function ChangeDropdown4(value) {
     if (value.length == 0) document.getElementById("Tier4").innerHTML = "<option></option>";
        else {
           var Tier4Options = "";
           for (Tier4Id in Tier4ByTier3[value]) {
                Tier4Options += "<option>" + Tier4ByTier3[value][Tier4Id] + "</option>";
           }
           document.getElementById("Tier4List").innherHTML = Tier4Options;
        }
}

Veja como o HTML se parece:

<input type="text" list="Tier4List" id="Tier4" onChange="ChangeDropdown4(this.value);">
javascript
  • 1 respostas
  • 77 Views
Martin Hope
pvrforpranavvr
Asked: 2025-04-24 12:05:53 +0800 CST

java.lang.NoSuchMethodError: 'org.apache.commons.compress.archivers.zip.ZipArchiveEntry org.apache.commons.compress.archivers.zip.ZipArchivelnputStream

  • 5

Exceção ao converter arquivo xlsx multipart em pasta de trabalho.

ERROR - Entered Global Exception Handler. Exception occurred while processing the request: jakarta.servlet.ServletException:
Handler dispatch failed: java.lang.NoSuchMethodError: 'org.apache.commons.compress.archivers.zip.ZipArchiveEntry
org.apache.commons.compress.archivers.zip.ZipArchivelnputStream.getNextEntry0*
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1104)
maven
  • 1 respostas
  • 35 Views
Martin Hope
ineedhelppls
Asked: 2025-04-24 11:34:08 +0800 CST

Problema com Java Swing (enquanto o loop verdadeiro tem um efeito burst)

  • 5

Main.java:

import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import java.security.Key;
import java.util.HashSet;
import java.util.Set;

class GameLoop implements Runnable
{
    public boolean running;

    public GameLoop() {
        running = true;
    }

    @Override
    public void run() {
        int counter = 1;
        while (running) {
            // Task that runs in the separate thread
            System.out.println("Separate thread counter: " + counter);
            counter++;

            try {
                Thread.sleep(1);  // Sleep for 1 second
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public void stopThread() {
        running = false;
    }
}

public class Main extends JFrame implements KeyListener // H: 23, W: 24
{
    private int backgroundTileSize = 24;
    private int backgroundTileSpace = 1;
    private int backgroundTileCount = 26;
    private int objectTileSize = 18;
    private int objectTileSpace = 1;
    private int WIDTH = backgroundTileSize * backgroundTileCount - (int) (backgroundTileSize * 1.65);
    private int HEIGHT = backgroundTileSize * backgroundTileCount - (int) (backgroundTileSize * 1.65);
    Background background;
    Player player;
    Objects objects;
    JLayeredPane layeredPane;
    private KeyEvent key = null;
    private final Set<Integer> keysPressed = new HashSet<>();
    private boolean keyPressed = false;
    private final int targetFPS = 60;
    private final int frameTime = 1000 / targetFPS;

    /*
            objects = new Objects(objectTileSize, objectTileSpace, HEIGHT, WIDTH);
        player = new Player(300, 300, "assets/kenney_pixel-platformer/Tiles/Characters/tile_0000.png");
     */
    public Main() throws IOException {
        super("Game");


        setSize(WIDTH, HEIGHT);
        setResizable(false);

        addKeyListener(this);
        setFocusable(true);
        requestFocusInWindow();


        layeredPane = new JLayeredPane();
        layeredPane.setBounds(0, 0, WIDTH, HEIGHT);

        //layeredPane.setPreferredSize(new Dimension(WIDTH, HEIGHT));
        //layeredPane.setLayout(null);

        background = new Background(backgroundTileSize, backgroundTileSpace, WIDTH, HEIGHT);
        objects = new Objects(objectTileSize, objectTileSpace, WIDTH, HEIGHT);
        player = new Player(400, 400, "assets/kenney_pixel-platformer/Tiles/Characters/tile_0000.png", WIDTH, HEIGHT);

        System.out.println(WIDTH + ", " + HEIGHT);

        layeredPane.add(background, Integer.valueOf(0));
        layeredPane.add(objects, Integer.valueOf(1));
        layeredPane.add(player, Integer.valueOf(2));

        getContentPane().add(layeredPane);
        layeredPane.repaint();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //startGameLoop();
        GameLoop gameLoop = new GameLoop();
        Thread thread = new Thread(gameLoop);
        thread.start();
    }

    private void startGameLoop() {
        new Thread(() -> {
            while (true) {
                long startTime = System.currentTimeMillis();

                System.out.println(1);
                handleMovement();
                layeredPane.repaint();

                long elapsedTime = System.currentTimeMillis() - startTime;
                long sleepTime = frameTime - elapsedTime;
                if (sleepTime < 0) sleepTime = 0;

                try {
                    Thread.sleep(sleepTime);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }

    private void handleMovement() {
        if (!keysPressed.isEmpty()) {
            if (keysPressed.contains(KeyEvent.VK_W)) {
                player.move(0, -1);
            }
            if (keysPressed.contains(KeyEvent.VK_A)) {
                player.move(-1, 0);
            }
            if (keysPressed.contains(KeyEvent.VK_D)) {
                player.move(1, 0);
            }
        }
    }


    public static void main(String[] args) throws IOException {
        Main main = new Main();
    }

    @Override
    public void keyTyped(KeyEvent keyEvent) {

    }

    @Override
    public void keyPressed(KeyEvent keyEvent) {
        keysPressed.add(keyEvent.getKeyCode());
    }

    @Override
    public void keyReleased(KeyEvent keyEvent) {
        keysPressed.remove(keyEvent.getKeyCode());
    }
}

Contexto.java:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.Canvas;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.awt.event.KeyEvent;
import java.util.*;
import java.awt.KeyboardFocusManager;
import java.awt.event.KeyEvent;


public class Background extends JPanel {
    private int backgroundTileSize;
    private int backgroundTileSpace;
    private int HEIGHT;
    private int WIDTH;
    private String level1Path = "levels/level1.txt";
    private int[][] level1 = new int[24][24];
    private Graphics window_;
    private Objects objects;
    private Player player;


    public Background(int bgTileSize, int bgTileSpace, int h, int w) throws IOException {
        setOpaque(true);

        backgroundTileSize = bgTileSize;
        backgroundTileSpace = bgTileSpace;
        HEIGHT = h;
        WIDTH = w;


        try (Scanner scan = new Scanner(new File(level1Path))) {
            int i = 0;
            int j = 0;
            while (scan.hasNext()) {
                if (i >= 24) {
                    i = 0;
                    j++;
                }
                level1[j][i] = Integer.parseInt(scan.next());
                i++;
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }


        setBackground(Color.WHITE);
        setBounds(0, 0, WIDTH, HEIGHT);
    }

    @Override
    public void paintComponent(Graphics window) {
        super.paintComponent(window);
        drawLevel1(window);
        window_ = window;

        /*
        try {
            objects.draw(window);
            player.draw(window);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

         */
    }


    public void drawLevel1(Graphics window) {
        for (int i = 0; i < level1.length; i++) {
            for (int j = 0; j < level1[i].length; j++) {
                int[] pos = {j * 24, i * 23};


                if (level1[i][j] == 0)
                    drawTile(window, "assets/kenney_pixel-platformer/Tilemap/tilemap-backgrounds.png", 1, 1, pos);


                if (level1[i][j] == 1)
                    drawTile(window, "assets/kenney_pixel-platformer/Tilemap/tilemap-backgrounds.png", 3, 1, pos);
            }
        }
    }


    public void drawTile(Graphics window, String tilemap, int row, int col, int[] pos) {
        BufferedImage image = null;
        try {
            image = ImageIO.read(new File(tilemap));
        } catch (IOException e) {
            throw new RuntimeException(e);
        }


        int x = (backgroundTileSize * (col - backgroundTileSpace)) + (col - backgroundTileSpace);
        int y = (backgroundTileSize * (row - backgroundTileSpace)) + (row - backgroundTileSpace);
        BufferedImage croppedImge = image.getSubimage(x, y, backgroundTileSize, backgroundTileSize);
        window.drawImage(croppedImge, pos[0], pos[1], null);
    }
}

Objetos.java:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.Canvas;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;


public class Objects extends JPanel {
    private int objectTileSize;
    private int objectTileSpace;
    private int HEIGHT;
    private int WIDTH;
    private String level1Path = "levels/level1Objects.txt";
    private int[][] level1 = new int[32][32];
    ArrayList<int[]> levers;


    public ArrayList<int[]> getLevers() {
        return levers;
    }
    public Objects(int objTileSize, int objTileSpace, int h, int w) {
        setOpaque(false);

        levers = new ArrayList<>();

        objectTileSize = objTileSize;
        objectTileSpace = objTileSpace;
        HEIGHT = h;
        WIDTH = w;

        try (Scanner scan = new Scanner(new File(level1Path))) {
            int i = 0;
            int j = 0;
            while (scan.hasNext()) {
                if (i>=32) {
                    i = 0;
                    j++;
                }
                level1[j][i] = Integer.parseInt(scan.next());
                i++;
            }
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }

        setBackground(Color.WHITE);
        setBounds(0, 0, WIDTH, HEIGHT);
    }

    @Override
    public void paintComponent(Graphics window) {
        super.paintComponent(window);
        try {
            drawLevel1(window);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public void drawLevel1(Graphics window) throws IOException {
        for (int i = 0; i < level1.length; i++) {
            for (int j = 0; j < level1[i].length; j++) {
                int[] pos = {j * objectTileSize, (i * objectTileSize) - objectTileSize + 6};


                if (level1[i][j] == 1) {
                    Image img = ImageIO.read(new File("assets/kenney_pixel-platformer/Tiles/tile_0021.png"));
                    window.drawImage(img, pos[0], pos[1], null);
                }


                if (level1[i][j] == 2) {
                    Image img = ImageIO.read(new File("assets/kenney_pixel-platformer/Tiles/tile_0023.png"));
                    window.drawImage(img, pos[0], pos[1], null);
                }


                if (level1[i][j] == 3) {
                    Image img = ImageIO.read(new File("assets/kenney_pixel-platformer/Tiles/tile_0022.png"));
                    window.drawImage(img, pos[0], pos[1], null);
                }


                if (level1[i][j] == 4) {
                    Image img = ImageIO.read(new File("assets/kenney_pixel-platformer/Tiles/tile_0020.png"));
                    window.drawImage(img, pos[0], pos[1], null);
                }


                if (level1[i][j] == 5) {
                    if (!levers.isEmpty()) {
                        for (int[] lever : levers) {
                            if (lever[0] != pos[0] && lever[1] != pos[1]) {
                                int[] lever_ = {pos[0], pos[1], -1};
                                levers.add(lever_);
                            }
                        }
                    } else {
                        int[] lever = {pos[0], pos[1], -1};
                        levers.add(lever);
                    }


                    Image img = ImageIO.read(new File("assets/kenney_pixel-platformer/Tiles/tile_0064.png"));
                    window.drawImage(img, pos[0], pos[1], null);
                }


                if (level1[i][j] == 6) {
                    if (!levers.isEmpty()) {
                        for (int[] lever : levers) {
                            if (lever[0] != pos[0] && lever[1] != pos[1]) {
                                int[] lever_ = {pos[0], pos[1], 1};
                                levers.add(lever_);
                            }
                        }
                    } else {
                        int[] lever = {pos[0], pos[1], 1};
                        levers.add(lever);
                    }


                    Image img = ImageIO.read(new File("assets/kenney_pixel-platformer/Tiles/tile_0066.png"));
                    window.drawImage(img, pos[0], pos[1], null);
                }


                if (level1[i][j] == 7) {
                    Image img = ImageIO.read(new File("assets/kenney_pixel-platformer/Tiles/tile_0053.png"));
                    window.drawImage(img, pos[0], pos[1], null);
                }
            }
        }
    }


    public void flipLever(int px, int py) { // player pos will be centered x and at the bottom of the img
        for (int[] lever : levers) {
            if ( (px >= lever[0] && px <= lever[0] + objectTileSize) && (py >= lever[1] + objectTileSize && py <= lever[1]) ) {
                System.out.println(1);
            }
        }
    }
}

Jogador.java:

import java.awt.*;
import java.io.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;

class PlayerImg extends Canvas {
    private BufferedImage img;
    private int x, y;

    public PlayerImg(int x_, int y_, String path) throws IOException {
        try {
            img = ImageIO.read(new File(path)); // Update the path
        } catch (IOException e) {
            e.printStackTrace();
        }

        this.x = x_;
        this.y = y_;
    }

    public void render(Graphics window) {
        window.drawImage(img, x, y, null);
    }

    public void move(int x_, int y_) {
        x += x_;
        y += y_;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }
}

public class Player extends JPanel {
    PlayerImg playerImg;
    private int WIDTH, HEIGHT;

    public Player(int x, int y, String path, int w, int h) throws IOException {
        setOpaque(false);

        playerImg = new PlayerImg(x, y, path);

        WIDTH = w;
        HEIGHT = h;

        setBackground(Color.WHITE);
        setBounds(0, 0, WIDTH, HEIGHT);
    }

    @Override
    public void paintComponent(Graphics window) {
        super.paintComponent(window);
        playerImg.render(window);
    }

    public void move(int x, int y) {
        playerImg.move(x, y);
        repaint();
    }
}

Eu crio uma thread separada, mas meu código parece ser afetado pelo outro código. Essa é uma teoria que eu tenho, mas realmente não sei. Eu imprimo 1s em um loop while true na minha thread, e ela os imprime em um padrão burst. Ah, e preciso disso para a movimentação do jogador.

Exemplo de saída:

1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

----> Atraso de 1 segundo

1
1
1
1
1
1
1
1
1
1
1
1
1
1

----> Atraso de 1 segundo

1
1
1
1
1
1
1
1
1
1
1
1
1
1

Criei isso dentro da classe principal e tentei usar booleanos. Para booleanos, eu esperava que ele usasse o efeito de alternância para corrigir o problema, mas isso foi antes de eu descobrir que o problema estava apenas na própria thread.

java
  • 1 respostas
  • 50 Views
Martin Hope
KooMaraLaHam
Asked: 2025-04-24 11:07:25 +0800 CST

Como obter tempo em nanossegundos no banco de dados OceanBase?

  • 6

OceanBase Versão V4.2

Consultei a documentação oficial do OceanBase . A precisão da função CURRENT_TIMESTAMP() é de 9 dígitos, o que é suficiente para obter o tempo em nanossegundos. No entanto, no meu ambiente, a precisão é de apenas 6 dígitos, e os últimos 3 dígitos são preenchidos com zeros.

SELECT
TO_TIMESTAMP(‘2003-10-24 10:48:45.656123456’,‘YYYY-MM-DD HH24:MI:SS:FF9’) TO_TS9,
TO_CHAR(TO_TIMESTAMP(‘2003-10-24 10:48:45.656123456’,‘YYYY-MM-DD HH24:MI:SSXFF’),‘YYYY-MM-DD HH24:MI:SS:FF9’) TO_CS9,
TO_CHAR(SYSTIMESTAMP, ‘YYYY-MM-DD HH24:MI:SS.FF9’) AS TO_CS92,
CURRENT_TIMESTAMP(9) TIMESTAMP9
FROM DUAL;

*************************** 1. row ***************************
TO_TS9: 2003-10-24 10:48:45.656123456
TO_CS9: 2003-10-24 10:48:45:656123456
TO_CS92: 2025-03-14 10:24:38.757049000
TIMESTAMP9: 14-MAR-25 10.24.38.757054000 AM +08:00

A partir da saída do SQL acima, é possível exibir dados de nanossegundos de 9 dígitos. Como posso obter o tempo em nanossegundos no banco de dados?

Quero obter a hora com precisão de 9 dígitos, ou seja, em nanossegundos, mas só consigo obter a hora em microssegundos com precisão de 6 dígitos, e os últimos 3 dígitos são preenchidos com zeros. Como posso obter a hora em nanossegundos no banco de dados?

timestamp
  • 1 respostas
  • 36 Views
Martin Hope
Steve
Asked: 2025-04-24 10:39:18 +0800 CST

CSS - Falha ao separar os divs de borda dupla dentro da tabela durante a impressão no Electron JS

  • 6

Esta é a estrutura HTML da tabela que estou imprimindo.

<body>
    <div class="tableFormat">
        <button onclick="window.print()">Print</button>
        <table>
            <tbody id="barcodeData">
                <tr>
                    <td>
                        <div class="eachBookCallNo">
                          <div class="callNo">
                              ၀၁၈၃၄၁ <br>
                                 -   <br>
                                 - 
                          </div>
                          <div class="barcode">
                             <img src="imagepath">၀၁၈၃၄၁</div>
                         </div>
                       </div>
                   </td>

                    <td>
                        <div class="eachBookCallNo">
                          <div class="callNo">
                               ၀၁၈၃၄၂ <br>
                                 -   <br>
                                 - 
                          </div>
                          <div class="barcode">
                             <img src="imagepath">၀၁၈၃၄၂</div>
                         </div>
                       </div>
                   </td>
  
                 </tr>

                 <!-- 12 rows -->
        </table>
    </div>

</body>

Este é o CSS para esse código


`.tableFormat table {
        border-spacing: 0.1in 0.1in;
        border-collapse: separate;
        border: none;
    }

.tableFormat table td{
        height: 0.95in;
        width: 33%;
        border: none;
    }
    
    .tableFormat table td div div{
        border: 1px double black;
        outline: 1px double black;
        outline-offset: 2px;
    }

    table td, table th {
        padding: 0; 
        margin: 0;
      }
    
    .eachBookCallNo{
        height: 100%;
        display: flex;
        box-sizing: border-box;
        cursor: pointer;
        gap: 0.05in;
    }

    .callNo{
        height: 100%;
        width: 40%;
        text-align: center;
        display: flex; 
        justify-content: center;
        align-items: center; 
        line-height: 25px;
        font-weight: bold;
        box-sizing: border-box;

    }

    .barcode{
        width: 60%; 
        height: 100%;
        display: flex; 
        justify-content: center;
        align-items: center; 
        flex-direction: column;
    }
    
    .barcode img{
        width: 98%;
        height: 60%;
        margin-right: 1px;
    }

    .barcode:nth-child(2){
        letter-spacing: 2.5cap;
        display: flex;
        align-items: flex-end;
        justify-content: center;
    }

@page {
      size: A4;
      margin: 0.75in 0.40in 0.75in 0.40in;
  }

  @media print {
    body {
      size: A4;
      font-family: Arial, sans-serif;
      font-size: 16px;
      font-weight: bold;
      color: #000;
      background: #fff;
      margin: 0;
    }

    .tableFormat table td div div{
        float:none;
        break-inside: avoid !important;
        break-after: always;
        margin: 4px 0px 4px 0px;
    }
    
    button{
        display: none;
    }
  }
`

Imprimir como captura de tela em PDF

Como anexei uma imagem, a primeira parte da borda dupla é dividida antes da quebra de página. Antes das bordas duplas, tentei com borda única e a quebra de página funciona.

Não tenho uma impressora física, então usei o CutePDF Write para simular uma impressora A4. Procurei soluções como esta (Evitar quebra de página dentro da linha da tabela) , mas não funcionou bem para mim. Preciso separar completamente a borda dupla em outra página.

javascript
  • 1 respostas
  • 42 Views
Martin Hope
JoshQuake
Asked: 2025-04-24 10:31:35 +0800 CST

Estilo PyQt5 no QMenu Dropdown?

  • 5

Criei uma QMenuBar com um QMenu com duas ações. No entanto, não consigo descobrir como estilizar o menu suspenso que aparece.

Minha tentativa de estilizar o menu suspenso simplesmente não está funcionando. Pelo que percebi, QAction não pode receber estilos, então tentei QMenu, mas também não funcionou. Então, não sei como estilizar este menu suspenso...

SO: Windows 11 usando PyQt5

from PyQt5.QtWidgets import QApplication, QWidget, QMenuBar, QMenu, QAction, QVBoxLayout, QMainWindow

class test(QMainWindow):
    def __init__(self):
        super(test, self).__init__()

        self.setWindowTitle('test')
        self.resize(200,200)

        self.mainWindow = QWidget()

        self.mainLayout = QVBoxLayout()
        
        self.bar = QMenuBar()
        self.menuItem = QMenu('Help')

        self.bar.addMenu(self.menuItem)

        self.menuAction = QAction('Action')

        self.menuItem.addAction(self.menuAction)

        self.mainLayout.addWidget(self.bar)

        self.mainWindow.setStyleSheet(""" 
                                        QWidget {
                                            background-color: #222;
                                            color: #cfcfcf;
                                            font-family: Roboto;
                                            font-size: 14pt; 
                                        }

                                        QMenuBar {
                                            background-color: #222;
                                            padding-top: 4px;
                                        }

                                        QMenuBar::item {
                                            border-radius: 4px;
                                            border-width: 0;
                                            padding: 4px 8px;
                                        }

                                        QMenuBar::item:selected {
                                            background-color: #777777;
                                        }

                                        QMenu, QAction {
                                            background-color: red;
                                            border-radius: 4px;
                                            border-width: 0;
                                        }

                                        QMenu::item {
                                            color: blue;
                                        }

                                        QMenu::item:selected {
                                            background-color: aqua;
                                            color: orange;
                                        }
                                        """)
        self.mainWindow.setLayout(self.mainLayout)
        self.setCentralWidget(self.mainWindow)

if __name__ in '__main__':
    app = QApplication([])
    main = test()
    main.show()
    app.exec_()

QMenu sem estilo visível

python
  • 1 respostas
  • 41 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve